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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 22411x 22411x 22411x 22411x 1x 11206x 11206x 11206x 11206x 11206x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 33424x 11206x 11206x 10643x 10643x 11206x 11206x 266x 266x 11206x 11206x 280x 280x 280x 280x 3x 3x 277x 280x 1578x 1578x 1574x 1574x 4x 4x 1578x 4x 4x 4x 1578x 2x 2x 2x 2x 2x 2x 1578x 1578x 277x 277x 277x 11206x 11206x | import {Issue} from "../issue"; import {ABAPRule} from "./_abap_rule"; import * as Statements from "../abap/2_statements/statements"; import * as Expressions from "../abap/2_statements/expressions"; import {BasicRuleConfig} from "./_basic_rule_config"; import {IRuleMetadata, RuleTag} from "./_irule"; import {ABAPFile} from "../abap/abap_file"; import {ABAPObject} from "../objects/_abap_object"; import {TypePool} from "../objects"; export class MacroNamingConf extends BasicRuleConfig { /** The pattern for macros, case insensitive */ public pattern: string = "^_.+$"; } export class MacroNaming extends ABAPRule { private conf = new MacroNamingConf(); public getMetadata(): IRuleMetadata { return { key: "macro_naming", title: "Macro naming conventions", shortDescription: `Allows you to enforce a pattern for macro definitions`, extendedInformation: `Use rule "avoid_use" to avoid macros altogether.`, tags: [RuleTag.Naming, RuleTag.SingleFile], badExample: `DEFINE something. END-OF-DEFINITION.`, goodExample: `DEFINE _something. END-OF-DEFINITION.`, }; } public getConfig(): MacroNamingConf { return this.conf; } public setConfig(conf: MacroNamingConf) { this.conf = conf; } public runParsed(file: ABAPFile, obj: ABAPObject) { const issues: Issue[] = []; const testRegex = new RegExp(this.conf.pattern, "i"); if (obj instanceof TypePool) { return []; } for (const stat of file.getStatements()) { if (!(stat.get() instanceof Statements.Define)) { continue; } const expr = stat.findDirectExpression(Expressions.MacroName); if (expr === undefined) { continue; } const token = expr.getFirstToken(); if (testRegex.exec(token.getStr())) { continue; } else { const message = "Bad macro name naming, expected \"" + this.conf.pattern + "\", got \"" + token.getStr() + "\""; const issue = Issue.atToken(file, token, message, this.getMetadata().key, this.conf.severity); issues.push(issue); } } return issues; } } |