UNPKG

@abaplint/core

Version:
77 lines 2.71 kB
"use strict"; 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