`Tslint --fix`不会自动修复,而是生成lint问题作为控制台错误

时间:2017-08-15 05:40:01

标签: tslint npm-scripts codelyzer

我正在使用the Angular starter kit

我试图让tslint使用--fix标志自动修复我所有的lint问题。

我正在运行脚本: npm run tslint --fix src/**/*.ts

它只是产生了同样的错误,我已经在tslint中告知了它而不是自动修复它:

控制台输出:

ERROR: src/app/app-routing.module.ts[10, 5]: comment must start with a space
ERROR: src/app/app-routing.module.ts[2, 20]: Too many spaces before 'from'

我是否遗漏了允许其实施更改的内容?

我的版本是:

"tslint": "^5.6.0"  
"codelyzer": "^3.1.2"

问题:如何让tslint实现自动修复到我的lint错误?

2 个答案:

答案 0 :(得分:3)

不幸的是,并非所有linting违规都是可自动修复的。您可以通过查找Has Fixer代码来查看which rules are auto-fixable here

我的猜测是"评论必须从空格开始"由comment-format rule管理,不可自动修复。

我不确定哪个规则导致了您的第二个错误,但很可能也无法自动修复。

这是一个代码片段,您可以tslint --fix反对来验证某些违规行为是否已修复,而其他违规行为则不然。

//no var keyword (comment does not start with space)
var x: string = 'x';
console.log(x);

// array-type
let y: String[] = [];
console.log(y);

// ban-single-arg-parens
['1', '2'].filter((arg) => {
    console.log(arg);
});

// semicolon
let z: string = ''
console.log(z);

// no unused variable
let a: string = '';

// trailing comma
let list = ['1', '2', ];

// missing trailing comma
let obj = [
    1,
    2
];

在提示上述文件时要包含的规则:

"semicolon": [true, "always"],
"trailing-comma": [true, {"multiline": "always", "singleline": "never"}],
"array-type": [true, "array-generic"],
"arrow-parens": [true, "ban-single-arg-parens"],

很容易认为所有的空白错误都是可以自动修复的,也许应该。可悲的是,他们不是。

答案 1 :(得分:0)

将库tslintcodelyzer更新为最新版本。

然后使用此命令:

tslint --fix src/**/*.ts -t verbose未使用npm run

完成后,它会向您显示无法解决的问题,因此您必须手动修复它。

您还可以将其添加到scripts中的package.json,如下所示:

"lint-fix": "tslint --fix src/**/*.ts -t verbose"