Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10995x 10995x 10995x 10995x 10995x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 32796x 10995x 10995x 1x 1x 10995x 10995x 10444x 10444x 10995x 10995x 260x 260x 10995x 10995x 274x 274x 274x 56x 1x 1x 56x 274x 274x 10995x 10995x | import {BasicRuleConfig} from "./_basic_rule_config"; import {ABAPRule} from "./_abap_rule"; import {IRuleMetadata, RuleTag} from "./_irule"; import * as Statements from "../abap/2_statements/statements"; import * as Expressions from "../abap/2_statements/expressions"; import {ABAPFile} from "../abap/abap_file"; import {Issue} from "../issue"; export class UseClassBasedExceptionsConf extends BasicRuleConfig { } export class UseClassBasedExceptions extends ABAPRule { private conf = new UseClassBasedExceptionsConf(); public getMetadata(): IRuleMetadata { 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: [RuleTag.Styleguide, RuleTag.SingleFile], badExample: `INTERFACE lif. METHODS load_data EXCEPTIONS invalid_parameter. ENDINTERFACE.`, goodExample: `INTERFACE lif. METHODS load_data RAISING cx_something. ENDINTERFACE.`, }; } private getMessage(): string { return "Use class based exceptions"; } public getConfig() { return this.conf; } public setConfig(conf: UseClassBasedExceptionsConf) { this.conf = conf; } public runParsed(file: ABAPFile) { const issues: Issue[] = []; for (const s of file.getStructure()?.findAllStatements(Statements.MethodDef) || []) { if (s.findDirectExpression(Expressions.MethodDefExceptions)) { issues.push(Issue.atStatement(file, s, this.getMessage(), this.getMetadata().key)); } } return issues; } } |