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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10529x 10529x 10529x 10529x 31332x 31332x 31332x 31332x 31332x 31332x 31332x 10529x 10529x 251x 251x 10529x 10529x 9969x 9969x 10529x 10529x 251x 251x 10529x 10529x 345x 345x 345x 345x 345x 1x 345x 344x 29x 5x 5x 344x 2x 2x 345x 345x 8x 8x 337x 337x 337x 10529x 10529x | import {Issue} from "../issue"; import {IObject} from "../objects/_iobject"; import {IRule, IRuleMetadata, RuleTag} from "./_irule"; import {BasicRuleConfig} from "./_basic_rule_config"; import {IRegistry} from "../_iregistry"; const NAME_REGEX = /^(\/[A-Z_\d]{3,8}\/)?[A-Z_\d<> ]+$/i; export class AllowedObjectNamingConf extends BasicRuleConfig { } export class AllowedObjectNaming implements IRule { private conf = new AllowedObjectNamingConf(); public getMetadata(): IRuleMetadata { return { key: "allowed_object_naming", title: "Allowed object naming", shortDescription: `Enforces basic name length and namespace restrictions, see note SAP 104010`, tags: [RuleTag.Naming, RuleTag.SingleFile], }; } public initialize(_reg: IRegistry) { return this; } public getConfig(): AllowedObjectNamingConf { return this.conf; } public setConfig(conf: AllowedObjectNamingConf) { this.conf = conf; } public run(obj: IObject): Issue[] { const allowed = obj.getAllowedNaming(); const name = obj.getName(); let message = ""; if (name.length > allowed.maxLength) { message = "Name exceeds max length"; } else if (allowed.allowNamespace === false && name.indexOf("/") >= 0) { message = "Namespace not allowed for object type"; } else if (allowed.customRegex !== undefined) { if (name.match(allowed.customRegex) === null) { message = "Name not allowed"; } } else if (name.match(NAME_REGEX) === null) { message = "Name not allowed"; } if (message.length > 0) { return [Issue.atRow(obj.getFiles()[0], 1, message, this.getMetadata().key, this.conf.severity)]; } return []; } } |