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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 21993x 21993x 21993x 21993x 21993x 21993x 21993x 21993x 1x 10997x 10997x 10997x 10997x 10997x 32842x 32842x 32842x 32842x 32842x 32842x 32842x 10997x 10997x 45x 45x 45x 45x 10997x 10997x 10444x 10444x 10997x 10997x 262x 262x 10997x 10997x 290x 290x 1x 1x 290x 290x 290x 290x 131x 45x 45x 86x 86x 86x 86x 131x 7x 131x 6x 79x 73x 73x 131x 86x 86x 131x 45x 45x 45x 45x 45x 45x 45x 131x 290x 290x 10997x 10997x | import {Issue} from "../issue"; import {ABAPRule} from "./_abap_rule"; import {NamingRuleConfig} from "./_naming_rule_config"; import {NameValidator} from "../utils/name_validator"; import {RuleTag} from "./_irule"; import {ABAPObject} from "../objects/_abap_object"; import {DDIC} from "../ddic"; import {ABAPFile} from "../abap/abap_file"; export class LocalClassNamingConf extends NamingRuleConfig { /** The pattern for local class names */ public local: string = "^LCL_.+$"; /** The pattern for local exception names */ public exception: string = "^LCX_.+$"; /** The pattern for local test class names */ public test: string = "^LTCL_.+$"; } export class LocalClassNaming extends ABAPRule { private conf = new LocalClassNamingConf(); public getMetadata() { return { key: "local_class_naming", title: "Local class naming conventions", shortDescription: `Allows you to enforce a pattern, such as a prefix, for local class names.`, tags: [RuleTag.Naming, RuleTag.SingleFile], }; } private getDescription(expected: string, actual: string): string { return this.conf.patternKind === "required" ? "Local class name does not match pattern " + expected + ": " + actual : "Local class name must not match pattern " + expected + ": " + actual; } public getConfig(): LocalClassNamingConf { return this.conf; } public setConfig(conf: LocalClassNamingConf) { this.conf = conf; } public runParsed(file: ABAPFile, obj: ABAPObject): Issue[] { const issues: Issue[] = []; if (this.conf.patternKind === undefined) { this.conf.patternKind = "required"; } const ddic = new DDIC(this.reg); for (const classDef of file.getInfo().listClassDefinitions()) { if (classDef.isGlobal) { continue; } const className = classDef.name; let expected = ""; if (classDef.isForTesting) { expected = this.conf.test; } else if (ddic.isException(classDef, obj) ) { expected = this.conf.exception; } else { expected = this.conf.local; } if (expected === undefined || expected.length === 0) { continue; } const regex = new RegExp(expected, "i"); if (NameValidator.violatesRule(className, regex, this.conf)) { issues.push( Issue.atIdentifier( classDef.identifier, this.getDescription(expected, className), this.getMetadata().key, this.conf.severity)); } } return issues; } } |