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 10964x 10964x 10964x 10964x 10964x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 32705x 10964x 10964x 1x 1x 10964x 10964x 10417x 10417x 10964x 10964x 258x 258x 10964x 10964x 272x 272x 272x 56x 1x 1x 56x 272x 272x 10964x 10964x | 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; } } |