@abaplint/core
Version:
abaplint - Core API
59 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UseClassBasedExceptions = exports.UseClassBasedExceptionsConf = void 0;
const _basic_rule_config_1 = require("./_basic_rule_config");
const _abap_rule_1 = require("./_abap_rule");
const _irule_1 = require("./_irule");
const Statements = require("../abap/2_statements/statements");
const Expressions = require("../abap/2_statements/expressions");
const issue_1 = require("../issue");
class UseClassBasedExceptionsConf extends _basic_rule_config_1.BasicRuleConfig {
}
exports.UseClassBasedExceptionsConf = UseClassBasedExceptionsConf;
class UseClassBasedExceptions extends _abap_rule_1.ABAPRule {
constructor() {
super(...arguments);
this.conf = new UseClassBasedExceptionsConf();
}
getMetadata() {
return {
key: "use_class_based_exceptions",
title: "Use class based exceptions",
shortDescription: `Use class based exceptions, checks interface and class definitions`,
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-class-based-exceptions`,
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
badExample: `INTERFACE lif.
METHODS load_data
EXCEPTIONS
invalid_parameter.
ENDINTERFACE.`,
goodExample: `INTERFACE lif.
METHODS load_data
RAISING
cx_something.
ENDINTERFACE.`,
};
}
getMessage() {
return "Use class based exceptions";
}
getConfig() {
return this.conf;
}
setConfig(conf) {
this.conf = conf;
}
runParsed(file) {
var _a;
const issues = [];
for (const s of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllStatements(Statements.MethodDef)) || []) {
const expr = s.findDirectExpression(Expressions.MethodDefExceptions);
if (expr) {
issues.push(issue_1.Issue.atToken(file, expr.getFirstToken(), this.getMessage(), this.getMetadata().key));
}
}
return issues;
}
}
exports.UseClassBasedExceptions = UseClassBasedExceptions;
//# sourceMappingURL=use_class_based_exceptions.js.map