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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 15471x 15471x 15471x 15471x 15471x 120824x 120824x 120824x 120824x 120824x 120824x 120824x 120824x 120824x 15471x 15471x 14908x 14908x 15471x 15471x 264x 264x 15471x 15471x 306x 306x 306x 306x 306x 306x 306x 1670x 11x 11x 11x 11x 11x 11x 1670x 1670x 1670x 306x 306x 306x 15471x | import {Issue} from "../issue";
import {Empty} from "../abap/2_statements/statements/_statement";
import {ABAPRule} from "./_abap_rule";
import {BasicRuleConfig} from "./_basic_rule_config";
import {EditHelper} from "../edit_helper";
import {Position} from "../position";
import {IRuleMetadata, RuleTag} from "./_irule";
import {ABAPFile} from "../abap/abap_file";
export class EmptyStatementConf extends BasicRuleConfig {
}
export class EmptyStatement extends ABAPRule {
private conf = new EmptyStatementConf();
public getMetadata(): IRuleMetadata {
return {
key: "empty_statement",
title: "Remove empty statement",
shortDescription: `Checks for empty statements (an empty statement is a single dot)`,
tags: [RuleTag.Quickfix, RuleTag.SingleFile],
badExample: `WRITE 'hello world'..`,
goodExample: `WRITE 'hello world'.`,
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: EmptyStatementConf) {
this.conf = conf;
}
public runParsed(file: ABAPFile) {
const issues: Issue[] = [];
const statements = file.getStatements();
let previousEnd = new Position(1, 1);
for (const sta of statements) {
if (sta.get() instanceof Empty) {
const token = sta.getFirstToken();
const fix = EditHelper.deleteRange(file, previousEnd, token.getEnd());
const issue = Issue.atStatement(file, sta, "Remove empty statement", this.getMetadata().key, this.conf.severity, fix);
issues.push(issue);
}
previousEnd = sta.getLastToken().getEnd();
}
return issues;
}
} |