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 32202x 32202x 32202x 1x 1x 42636x 8805x 8805x 33831x 33831x 33831x 33831x 42636x 34708x 34708x 33831x 33831x 33831x 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;
  }
 
}