UNPKG

@abaplint/core

Version:
61 lines (58 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MethodOverwritesBuiltIn = exports.MethodOverwritesBuiltInConf = void 0; const _builtin_1 = require("../abap/5_syntax/_builtin"); 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"); class MethodOverwritesBuiltInConf extends _basic_rule_config_1.BasicRuleConfig { } exports.MethodOverwritesBuiltInConf = MethodOverwritesBuiltInConf; class MethodOverwritesBuiltIn extends _abap_rule_1.ABAPRule { constructor() { super(...arguments); this.conf = new MethodOverwritesBuiltInConf(); } getMetadata() { return { key: "method_overwrites_builtin", title: "Method name overwrites builtin function", shortDescription: `Checks Method names that overwrite builtin SAP functions`, extendedInformation: `https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenbuilt_in_functions_overview.htm https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obscuring-built-in-functions Interface method names are ignored`, tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide], badExample: `CLASS lcl DEFINITION. PUBLIC SECTION. METHODS matches. ENDCLASS. CLASS lcl IMPLEMENTATION. METHOD matches. ENDMETHOD. ENDCLASS.`, }; } getConfig() { return this.conf; } setConfig(conf) { this.conf = conf; } runParsed(file) { const issues = []; let methods = []; for (const classDef of file.getInfo().listClassDefinitions()) { methods = methods.concat(classDef.methods); } for (const method of methods) { if (_builtin_1.BuiltIn.searchBuiltin(method.name.toUpperCase())) { const message = `Method name "${method.name}" overwrites built-in SAP function name`; issues.push(issue_1.Issue.atIdentifier(method.identifier, message, this.getMetadata().key)); } } return issues; } } exports.MethodOverwritesBuiltIn = MethodOverwritesBuiltIn; //# sourceMappingURL=method_overwrites_builtin.js.map