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 31128x 31128x 31128x 1x 1x 38973x 7255x 7255x 31718x 31718x 31718x 31718x 38973x 32546x 32546x 31718x 31718x 31718x 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;
  }
 
}