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 11016x 11016x 11016x 11016x 11016x 11016x 32810x 32810x 32810x 32810x 32810x 32810x 32810x 32810x 32810x 32810x 32810x 11016x 11016x 10447x 10447x 11016x 11016x 260x 260x 11016x 11016x 272x 272x 272x 272x 11016x 11016x 343x 63x 63x 280x 280x 343x 289x 289x 280x 280x 11016x 11016x | 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; } } |