@abaplint/core
Version:
abaplint - Core API
61 lines (58 loc) • 2.34 kB
JavaScript
;
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