Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 362x 362x 362x 362x 362x 362x 362x 79x 79x 283x 362x 292x 1836x 1836x 7x 7x 7x 7x 1836x 7x 7x 7x 7x 1829x 1822x 1822x 12x 12x 1836x 292x 283x 283x 283x 1x 1x 7x 7x 7x 7x 7x 7x 7x 1x | import * as Statements from "../abap/2_statements/statements";
import {Position} from "../position";
import {FormName} from "../abap/2_statements/expressions";
import {StatementNode} from "../abap/nodes";
import {IObject} from "../objects/_iobject";
import {ABAPObject} from "../objects/_abap_object";
import {Empty, Comment} from "../abap/2_statements/statements/_statement";
import {IMethodLengthResult} from "./method_length_stats";
export class FormLengthStats {
public static run(obj: IObject): IMethodLengthResult[] {
const res: IMethodLengthResult[] = [];
let pos: Position | undefined = undefined;
let name: string = "";
let count = 0;
let form: boolean = false;
if (!(obj instanceof ABAPObject)) {
return [];
}
for (const file of obj.getABAPFiles()) {
for (const stat of file.getStatements()) {
const type = stat.get();
if (type instanceof Statements.Form) {
pos = stat.getFirstToken().getStart();
name = this.findName(stat);
form = true;
count = 0;
} else if (type instanceof Statements.EndForm) {
if (pos) {
res.push({name: name, className: "", count, file, pos});
} else {
continue;
}
form = false;
} else if (form === true
&& !(type instanceof Comment)
&& !(type instanceof Empty)) {
count = count + 1;
}
}
}
return res;
}
private static findName(stat: StatementNode): string {
let name: string = "";
const nameExpr = stat.findFirstExpression(FormName);
if (nameExpr) {
name = nameExpr.getFirstToken().getStr();
} else {
throw new Error("FormLength, findName, expected FormName");
}
return name;
}
} |