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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 1x 1x 1x 1x 1x 1x 1x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 22009x 1x 11006x 11006x 11006x 11006x 32881x 32881x 32881x 32881x 32881x 32881x 32881x 32881x 32881x 32881x 11006x 11006x 10761x 10761x 11006x 11006x 243x 243x 11006x 11006x 265x 265x 265x 265x 265x 1478x 1457x 1457x 21x 21x 1478x 12x 12x 9x 1478x 36x 9x 9x 9x 36x 9x 265x 265x 265x 11006x 11006x | import {Issue} from "../issue";
import {ABAPRule} from "./_abap_rule";
import {BasicRuleConfig} from "./_basic_rule_config";
import {IRuleMetadata, RuleTag} from "./_irule";
import {ABAPFile} from "../abap/abap_file";
import {Comment} from "../abap/2_statements/statements/_statement";
export class PreferPragmasConf extends BasicRuleConfig {
public check: {pseudo: string, pragma: string}[] = [
{
pseudo: "#EC CI_SUBRC",
pragma: "SUBRC_OK",
},
{
pseudo: "#EC NEEDED",
pragma: "NEEDED",
},
{
pseudo: "#EC NOTEXT",
pragma: "NO_TEXT",
},
{
pseudo: "#EC NO_HANDLER",
pragma: "NO_HANDLER",
},
];
}
export class PreferPragmas extends ABAPRule {
private conf = new PreferPragmasConf();
public getMetadata(): IRuleMetadata {
return {
key: "prefer_pragmas",
title: "prefer pragmas over pseudo comments ",
shortDescription: `prefer pragmas over pseudo comments `,
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-pragmas-to-pseudo-comments`,
tags: [RuleTag.SingleFile, RuleTag.Styleguide],
badExample: `DATA foo1 TYPE i. "#EC NEEDED`,
goodExample: `DATA foo2 TYPE i ##NEEDED.`,
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: PreferPragmasConf) {
this.conf = conf;
}
public runParsed(file: ABAPFile) {
const issues: Issue[] = [];
const config = this.getConfig();
for (const statement of file.getStatements()) {
if (!(statement.get() instanceof Comment)) {
continue;
}
const concat = statement.concatTokens().toUpperCase();
if (concat.includes("#EC") === false) {
continue;
}
for (const check of config.check) {
if (concat.includes(check.pseudo.toUpperCase())) {
const message = `Prefer pragma ${check.pragma}`;
issues.push(Issue.atStatement(file, statement, message, this.getMetadata().key, this.getConfig().severity));
}
}
}
return issues;
}
} |