All files / src/rules _abap_rule.ts

100% Statements 37/37
100% Branches 6/6
100% Functions 2/2
100% Lines 37/37

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 371x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 28721x 28721x 28721x 1x 1x 36683x 7489x 7489x 29194x 29194x 29194x 29194x 36683x 30022x 30022x 29194x 29194x 29194x 1x 1x
import {IRule, IRuleMetadata} from "./_irule";
import {IObject} from "../objects/_iobject";
import {ABAPObject} from "../objects/_abap_object";
import {Issue} from "../issue";
import {IRegistry} from "../_iregistry";
import {ABAPFile} from "../abap/abap_file";
 
export abstract class ABAPRule implements IRule {
  protected reg: IRegistry;
 
  public abstract getMetadata(): IRuleMetadata;
  public abstract getConfig(): void;
  public abstract setConfig(conf: any): void;
 
  public abstract runParsed(file: ABAPFile, obj: ABAPObject): readonly Issue[];
 
  public initialize(reg: IRegistry) {
    this.reg = reg;
    return this;
  }
 
  public run(obj: IObject): readonly Issue[] {
    if (!(obj instanceof ABAPObject)) {
      return [];
    }
 
    const abap = obj as ABAPObject;
    const output: Issue[] = [];
 
    for (const file of abap.getABAPFiles()) {
      output.push(...this.runParsed(file, obj));
    }
 
    return output;
  }
 
}