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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10058x 10058x 10058x 10058x 10058x 30003x 30003x 30003x 30003x 30003x 30003x 30003x 30003x 10058x 10058x 1x 1x 10058x 10058x 9559x 9559x 10058x 10058x 234x 234x 10058x 10058x 248x 248x 248x 52x 1x 1x 52x 248x 248x 10058x 10058x | 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], }; } 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; } } |