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 11084x 11084x 11084x 11084x 32987x 32987x 32987x 32987x 32987x 32987x 32987x 11084x 11084x 261x 261x 11084x 11084x 10504x 10504x 11084x 11084x 261x 261x 11084x 11084x 355x 355x 355x 355x 355x 1x 355x 354x 29x 5x 5x 354x 2x 2x 355x 355x 8x 8x 347x 347x 347x 11084x 11084x | 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 []; } } |