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 22243x 22243x 22243x 22243x 22243x 22243x 22243x 22243x 1x 11122x 11122x 11122x 11122x 11122x 33214x 33214x 33214x 33214x 33214x 33214x 33214x 11122x 11122x 48x 48x 48x 48x 11122x 11122x 10557x 10557x 11122x 11122x 268x 268x 11122x 11122x 296x 296x 1x 1x 296x 296x 296x 296x 134x 45x 45x 89x 89x 89x 89x 134x 7x 134x 6x 82x 76x 76x 134x 89x 89x 134x 48x 48x 48x 48x 48x 48x 48x 134x 296x 296x 11122x 11122x | 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; } } |