【问题标题】:`Tslint --fix` does not autofix but instead generates lint problems as console errors`Tslint --fix` 不会自动修复,而是会生成 lint 问题作为控制台错误
【发布时间】:2023-03-03 06:00:19
【问题描述】:

我正在使用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 错误?

【问题讨论】:

    标签: tslint npm-scripts codelyzer


    【解决方案1】:

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

    我的猜测是“评论必须以空格开头”由comment-format rule 管理,它不能自动修复。

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

    这是一个 sn-p,您可以运行 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"],
    

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

    【讨论】:

    • 我认为最好的方法是制作第二个 linting 文件,其中只包含您想要自动修复的规则。制作一个自定义 npm 命令npm run lint-fix,它只使用专门的 lint 文件运行 tslint --fix。您可以使用新命令进行自动修复,并且可以像平常一样使用良好的 ol ng lint
    【解决方案2】:

    将库 tslintcodelyzer 更新到最新版本。

    然后使用这个命令:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 2021-02-05
      • 2019-07-11
      • 2020-08-27
      • 2021-09-09
      • 2016-11-28
      • 2019-03-10
      • 1970-01-01
      • 2017-09-05
      相关资源
      最近更新 更多