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 10503x 10503x 10503x 10503x 10503x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 31329x 10503x 10503x 1x 1x 10503x 10503x 9970x 9970x 10503x 10503x 251x 251x 10503x 10503x 266x 266x 266x 56x 1x 1x 56x 266x 266x 10503x 10503x | 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; } } |