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 10503x 10503x 10503x 10503x 10503x 31330x 31330x 31330x 31330x 31330x 31330x 31330x 31330x 31330x 10503x 10503x 9973x 9973x 10503x 10503x 251x 251x 10503x 10503x 278x 278x 278x 278x 1508x 58x 58x 58x 6x 2x 2x 4x 4x 4x 4x 4x 58x 1508x 1508x 4x 4x 4x 4x 1508x 278x 278x 278x 10503x 10503x | 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; } } |