@abaplint/core
Version:
abaplint - Core API
77 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreferPragmas = exports.PreferPragmasConf = void 0;
const issue_1 = require("../issue");
const _abap_rule_1 = require("./_abap_rule");
const _basic_rule_config_1 = require("./_basic_rule_config");
const _irule_1 = require("./_irule");
const _statement_1 = require("../abap/2_statements/statements/_statement");
class PreferPragmasConf extends _basic_rule_config_1.BasicRuleConfig {
constructor() {
super(...arguments);
this.check = [
{
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",
},
];
}
}
exports.PreferPragmasConf = PreferPragmasConf;
class PreferPragmas extends _abap_rule_1.ABAPRule {
constructor() {
super(...arguments);
this.conf = new PreferPragmasConf();
}
getMetadata() {
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: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],
badExample: `DATA foo1 TYPE i. "#EC NEEDED`,
goodExample: `DATA foo2 TYPE i ##NEEDED.`,
};
}
getConfig() {
return this.conf;
}
setConfig(conf) {
this.conf = conf;
}
runParsed(file) {
const issues = [];
const config = this.getConfig();
for (const statement of file.getStatements()) {
if (!(statement.get() instanceof _statement_1.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_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.getConfig().severity));
}
}
}
return issues;
}
}
exports.PreferPragmas = PreferPragmas;
//# sourceMappingURL=prefer_pragmas.js.map