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 14442x 14442x 14442x 1x 1x 16957x 1881x 1881x 15076x 15076x 15076x 15076x 16957x 15456x 15456x 15076x 15076x 15076x 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;
  }
 
}