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 30534x 30534x 30534x 1x 1x 39204x 8175x 8175x 31029x 31029x 31029x 31029x 39204x 31892x 31892x 31029x 31029x 31029x 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;
  }
 
}