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 11075x 11075x 11075x 11075x 11075x 11075x 32986x 32986x 32986x 32986x 32986x 32986x 32986x 32986x 32986x 32986x 32986x 11075x 11075x 10504x 10504x 11075x 11075x 261x 261x 11075x 11075x 273x 273x 273x 273x 11075x 11075x 344x 63x 63x 281x 281x 344x 290x 290x 281x 281x 11075x 11075x | 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; } } |