18 lines
542 B
Text
18 lines
542 B
Text
# Computes Number of Public Methods (NPM) for each project, per-type
|
|
# Output is: NPM[ProjectID][TypeName] = NPM value
|
|
p: Project = input;
|
|
NPM: output sum[string][string] of int;
|
|
|
|
visit(p, visitor {
|
|
# only look at the latest snapshot
|
|
before n: CodeRepository -> {
|
|
snapshot := getsnapshot(n);
|
|
foreach (i: int; def(snapshot[i]))
|
|
visit(snapshot[i]);
|
|
stop;
|
|
}
|
|
before node: Declaration ->
|
|
if (node.kind == TypeKind.CLASS)
|
|
foreach (i: int; has_modifier_public(node.methods[i]))
|
|
NPM[p.id][node.name] << 1;
|
|
});
|