UNPKG

@abaplint/core

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