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 351x 351x 351x 351x 351x 351x 351x 71x 71x 280x 351x 287x 1785x 1785x 7x 7x 7x 7x 1785x 7x 7x 7x 7x 1778x 1771x 1771x 12x 12x 1785x 287x 280x 280x 280x 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;
}
} |