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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11715x 11715x 11715x 11715x 11715x 57431x 57431x 57431x 57431x 57431x 57431x 57431x 57431x 11715x 11715x 11175x 11175x 11715x 11715x 253x 253x 11715x 11715x 257x 257x 11715x 11715x 345x 345x 260x 260x 85x 85x 85x 11715x 11715x 85x 85x 85x 85x 11715x | import {EditHelper} from "../edit_helper";
import {IFile} from "../files/_ifile";
import {Issue} from "../issue";
import {IObject} from "../objects/_iobject";
import {Position} from "../position";
import {IRegistry} from "../_iregistry";
import {BasicRuleConfig} from "./_basic_rule_config";
import {IRule, IRuleMetadata, RuleTag} from "./_irule";
export class XMLBOMConf extends BasicRuleConfig {
}
export class XMLBOM implements IRule {
private conf = new XMLBOMConf();
public getMetadata(): IRuleMetadata {
return {
key: "xml_bom",
title: "XML UTF-8 byte order mark",
shortDescription: "Checks that XML files start with a UTF-8 byte order mark",
extendedInformation: "Checks that each XML file has a UTF-8 byte order mark (BOM) at its beginning.",
tags: [RuleTag.Syntax, RuleTag.Quickfix],
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: XMLBOMConf) {
this.conf = conf;
}
public initialize(_reg: IRegistry) {
return this;
}
public run(obj: IObject): Issue[] {
const file = obj.getXMLFile();
if (file === undefined || file.getRaw().startsWith("\uFEFF")) {
return [];
}
return [this.createIssue(file)];
}
private createIssue(file: IFile): Issue {
const start = new Position(1, 1);
const fix = EditHelper.insertAt(file, start, "\uFEFF");
return Issue.atRange(file, start, start, "XML file must start with a UTF-8 byte order mark", this.getMetadata().key, this.conf.severity, fix);
}
}
|