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 10342x 10342x 10342x 10342x 10342x 10342x 30807x 30807x 30807x 30807x 30807x 30807x 30807x 30807x 30807x 30807x 30807x 10342x 10342x 9811x 9811x 10342x 10342x 241x 241x 10342x 10342x 253x 253x 253x 253x 10342x 10342x 324x 62x 62x 262x 262x 324x 271x 271x 262x 262x 10342x 10342x | 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; } } |