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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11216x 11216x 11216x 11216x 11216x 33493x 33493x 33493x 33493x 33493x 33493x 33493x 33493x 33493x 11216x 11216x 10734x 10734x 11216x 11216x 227x 227x 11216x 11216x 253x 253x 253x 253x 1378x 43x 43x 43x 6x 2x 2x 4x 4x 4x 4x 4x 43x 1378x 1378x 4x 4x 4x 4x 1378x 253x 253x 253x 11216x 11216x | import {ABAPRule} from "./_abap_rule"; import {BasicRuleConfig} from "./_basic_rule_config"; import {Issue} from "../issue"; import * as Expressions from "../abap/2_statements/expressions"; import {IRuleMetadata, RuleTag} from "./_irule"; import {ABAPFile} from "../abap/abap_file"; import {CallScreen, SetScreen} from "../abap/2_statements/statements"; import {EditHelper} from "../edit_helper"; export class OmitPrecedingZerosConf extends BasicRuleConfig { } export class OmitPrecedingZeros extends ABAPRule { private conf = new OmitPrecedingZerosConf(); public getMetadata(): IRuleMetadata { return { key: "omit_preceding_zeros", title: "Omit preceding zeros", shortDescription: `Omit preceding zeros from integer constants`, tags: [RuleTag.SingleFile, RuleTag.Quickfix], badExample: `int = -001.`, goodExample: `int = -1.`, }; } public getConfig() { return this.conf; } public setConfig(conf: OmitPrecedingZerosConf): void { this.conf = conf; } public runParsed(file: ABAPFile) { const issues: Issue[] = []; const message = "Omit preceding zeros"; for (const s of file.getStatements()) { for (const i of s.findAllExpressions(Expressions.Integer)) { const token = i.getLastToken(); const str = token.getStr(); if (str.length > 1 && str.startsWith("0")) { if (s.get() instanceof CallScreen || s.get() instanceof SetScreen) { continue; } const replace = str.replace(/^0+/, ""); const fix = EditHelper.replaceRange(file, token.getStart(), token.getEnd(), replace); const issue = Issue.atToken(file, token, message, this.getMetadata().key, this.getConfig().severity, fix); issues.push(issue); } } for (const i of s.findAllExpressions(Expressions.ParameterException)) { const token = i.findDirectExpression(Expressions.SimpleName)?.getFirstToken(); const str = token?.getStr(); if (token && str && str.length > 1 && str.startsWith("0")) { const replace = str.replace(/^0+/, ""); const fix = EditHelper.replaceRange(file, token.getStart(), token.getEnd(), replace); const issue = Issue.atToken(file, token, message, this.getMetadata().key, this.getConfig().severity, fix); issues.push(issue); } } } return issues; } } |