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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11146x 11146x 11146x 11146x 11146x 33245x 33245x 33245x 33245x 33245x 33245x 33245x 33245x 33245x 33245x 11146x 11146x 3x 3x 11146x 11146x 10583x 10583x 11146x 11146x 266x 266x 11146x 11146x 270x 270x 11146x 11146x 336x 336x 336x 354x 354x 354x 354x 354x 3987x 3x 3x 3x 3x 3x 3x 3x 3987x 354x 336x 336x 336x 11146x | import {Issue} from "../issue"; import {Position} from "../position"; import {BasicRuleConfig} from "./_basic_rule_config"; import {EditHelper} from "../edit_helper"; import {IRule, IRuleMetadata, RuleTag} from "./_irule"; import {IRegistry} from "../_iregistry"; import {IObject} from "../objects/_iobject"; import {MIMEObject, WebMIME} from "../objects"; export class WhitespaceEndConf extends BasicRuleConfig { } export class WhitespaceEnd implements IRule { private conf = new WhitespaceEndConf(); public getMetadata(): IRuleMetadata { return { key: "whitespace_end", title: "Whitespace at end of line", shortDescription: `Checks for redundant whitespace at the end of each line.`, extendedInformation: `SMIM and W3MI files are not checked.`, tags: [RuleTag.Whitespace, RuleTag.Quickfix, RuleTag.SingleFile], badExample: `WRITE 'hello'. `, goodExample: `WRITE 'hello'.`, }; } private getMessage(): string { return "Remove whitespace at end of line"; } public getConfig() { return this.conf; } public setConfig(conf: WhitespaceEndConf) { this.conf = conf; } public initialize(_reg: IRegistry): IRule { return this; } public run(obj: IObject): readonly Issue[] { const issues: Issue[] = []; for (const file of obj.getFiles()) { if (obj instanceof MIMEObject || obj instanceof WebMIME) { continue; } const rows = file.getRawRows(); for (let i = 0; i < rows.length; i++) { if (rows[i].endsWith(" ") || rows[i].endsWith(" \r")) { const match = / +\r?$/.exec(rows[i]); const start = new Position(i + 1, match!.index + 1); const end = new Position(i + 1, rows[i].length + 1); const fix = EditHelper.deleteRange(file, start, end); const issue = Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix); issues.push(issue); } } } return issues; } } |