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 77 78 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 8923x 8923x 8923x 8923x 8923x 26630x 26630x 26630x 26630x 26630x 26630x 26630x 26630x 26630x 26630x 8923x 8923x 8485x 8485x 8923x 8923x 202x 202x 8923x 8923x 223x 223x 223x 223x 1227x 1227x 1105x 1105x 122x 122x 122x 1227x 2x 2x 2x 122x 122x 122x 1227x 2x 2x 2x 122x 1227x 1227x 1227x 72x 1227x 28x 28x 22x 22x 22x 22x 22x 22x 223x 223x 223x 8923x 8923x | import {Issue} from "../issue"; import {ABAPRule} from "./_abap_rule"; import {BasicRuleConfig} from "./_basic_rule_config"; import {IRuleMetadata, RuleTag} from "./_irule"; import {ABAPFile} from "../abap/abap_file"; import {EditHelper} from "../edit_helper"; import {Comment} from "../abap/2_statements/statements/_statement"; export class UnnecessaryChainingConf extends BasicRuleConfig { } export class UnnecessaryChaining extends ABAPRule { private conf = new UnnecessaryChainingConf(); public getMetadata(): IRuleMetadata { return { key: "unnecessary_chaining", title: "Unnecessary Chaining", shortDescription: `Find unnecessary chaining, all statements are checked`, extendedInformation: ``, tags: [RuleTag.SingleFile, RuleTag.Quickfix], badExample: `WRITE: bar.`, goodExample: `WRITE bar.`, }; } public getConfig() { return this.conf; } public setConfig(conf: UnnecessaryChainingConf) { this.conf = conf; } public runParsed(file: ABAPFile) { const issues: Issue[] = []; const statements = file.getStatements(); for (let i = 0; i < statements.length; i++) { const colon = statements[i].getColon(); if (colon === undefined) { continue; } let j = 1; let nextStatement = statements[i + j]; while (nextStatement?.get() instanceof Comment) { j++; nextStatement = statements[i + j]; } j = 1; let prevStatement = statements[i - j]; while (prevStatement?.get() instanceof Comment) { j--; prevStatement = statements[i - j]; } const next = nextStatement?.getColon(); const prev = prevStatement?.getColon(); if (next !== undefined && colon.getStart().equals(next.getStart())) { continue; } else if (prev !== undefined && colon.getStart().equals(prev.getStart())) { continue; } const fix = EditHelper.deleteRange(file, colon.getStart(), colon.getEnd()); const message = "Unnecessary chaining"; const issue = Issue.atToken(file, colon, message, this.getMetadata().key, this.conf.severity, fix); issues.push(issue); } return issues; } } |