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 10502x 10502x 10502x 10502x 10502x 31328x 31328x 31328x 31328x 31328x 31328x 31328x 31328x 31328x 31328x 10502x 10502x 3x 3x 10502x 10502x 9969x 9969x 10502x 10502x 251x 251x 10502x 10502x 255x 255x 10502x 10502x 321x 321x 321x 339x 339x 339x 339x 339x 3862x 3x 3x 3x 3x 3x 3x 3x 3862x 339x 321x 321x 321x 10502x | 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; } } |