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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10072x 10072x 10072x 10072x 10072x 10072x 29996x 29996x 29996x 29996x 29996x 29996x 29996x 29996x 29996x 29996x 29996x 10072x 10072x 9555x 9555x 10072x 10072x 234x 234x 10072x 10072x 246x 246x 246x 246x 10072x 10072x 313x 58x 58x 255x 255x 313x 264x 264x 255x 255x 10072x 10072x | import {IRegistry} from "../_iregistry"; import {BasicRuleConfig} from "./_basic_rule_config"; import {ABAPObject} from "../objects/_abap_object"; import {IncludeGraph} from "../utils/include_graph"; import {IRule, IRuleMetadata, RuleTag} from "./_irule"; import {Issue} from "../issue"; import {IObject} from "../objects/_iobject"; export class CheckIncludeConf extends BasicRuleConfig { } export class CheckInclude implements IRule { private reg: IRegistry; private conf = new CheckIncludeConf(); private graph: IncludeGraph; public getMetadata(): IRuleMetadata { return { key: "check_include", title: "Check INCLUDEs", shortDescription: `Checks INCLUDE statements`, extendedInformation: ` * Reports unused includes * Errors if the includes are not found * Error if including a main program`, tags: [RuleTag.Syntax], }; } public getConfig() { return this.conf; } public setConfig(conf: CheckIncludeConf) { this.conf = conf; } public initialize(reg: IRegistry) { this.reg = reg; this.graph = new IncludeGraph(this.reg); return this; } public run(obj: IObject): readonly Issue[] { if (!(obj instanceof ABAPObject)) { return []; } let ret: Issue[] = []; for (const file of obj.getABAPFiles()) { ret = ret.concat(this.graph.getIssuesFile(file)); } return ret; } } |