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 340x 340x 340x 340x 340x 340x 340x 63x 63x 277x 340x 284x 1785x 1785x 39x 39x 39x 39x 1785x 39x 39x 39x 39x 1746x 1707x 1707x 140x 140x 1785x 284x 277x 277x 277x 1x 1x 39x 39x 39x 39x 39x 39x 39x 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; } } |