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 10520x 10520x 10520x 10520x 10520x 10520x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 31331x 10520x 10520x 9969x 9969x 10520x 10520x 251x 251x 10520x 10520x 263x 263x 263x 263x 10520x 10520x 334x 62x 62x 272x 272x 334x 281x 281x 272x 272x 10520x 10520x | 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; } } |