JavaScript 代码 Linting 工具,用于查找已初始化但可能由于条件而未使用的变量

JavaScript Code Linting tool to find Variables which are initialised but might not be used due to condition

提问人:dnsh 提问时间:5/24/2022 更新时间:5/24/2022 访问量:194

问:

我有以下 JavaScript 代码,

var foo = {
    company: "ABC",
    name: "John"
};

var att = "";

function test(ob, i) {
    var m = JSON.stringify(ob);
    if (i < 10) {
        att = att + m;
    }
}

test(foo, 20);

在上面的代码中,当不为 true 时,line 是变量的不必要初始化。更好的代码是将初始化移动到条件中。var m = JSON.stringify(ob);i < 10if

我找不到可以检测此类情况的代码 linter。在这种情况下,我想要一个警告。有谁知道任何可以做到这一点的 linting 工具?variable might not be used

我试过了

  1. ES棉绒
  2. JS棉绒
JavaScript eslint jslint linter

评论

0赞 AKX 5/24/2022
这需要对整个程序进行代码流分析——不,我认为目前没有任何 linter 可以做到这一点。
0赞 DBS 5/24/2022
TypeScript 可能会接受这一点,但这不仅仅是一个 linter。(而且,不幸的是,库/工具推荐请求在本网站上偏离了主题)
0赞 dnsh 5/24/2022
@DBS恕我直言,这不是一个通常有自以为是的答案的库/工具推荐请求。我正在寻找解决一个特定的问题。
0赞 dnsh 5/24/2022
@AKX 不一定是代码流分析,而是代码块分析,即初始化的变量是否存在于某些内部代码块中,而不存在于外部代码块中(这里的代码块将仅限于不使用变量本身的条件)。:)
0赞 TwistedOwl 5/24/2022
这应该很容易实现 - 您需要在 AST 资源管理器中查找所有类似 IF 的块,并检查给定变量是否存在。我看到的唯一问题是它在插件运行期间可能会使用太多资源,但这是可行的。我建议检查 AST 和 eslint 插件系统的工作原理。我不希望这样的插件存在,因为它是一种边缘情况

答: 暂无答案