有没有办法抑制给定行的 JSHint 警告?

Posted

技术标签:

【中文标题】有没有办法抑制给定行的 JSHint 警告?【英文标题】:Is there a way to suppress JSHint warning for one given line? 【发布时间】:2012-10-10 06:27:59 【问题描述】:

我的应用中有一个(单个)案例,使用了eval,我想仅针对这种情况禁止 JSHint 警告。

有没有办法做到这一点?配置,魔术注释,...?

【问题讨论】:

【参考方案1】:

是的,有办法。实际上是两个。在October 2013jshint 中添加了一种忽略这样的代码块的方法:

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be ignored by JSHint.
/* jshint ignore:end */
// Code here will be linted with JSHint.

您也可以像这样忽略带有尾随注释的单行:

ignoreThis(); // jshint ignore:line

【讨论】:

对于任何试图让 JSHint Sublime Text 2/3 插件工作的人,您需要专门在 ST 包文件夹中升级 jshint。 (我专门用 JSHint Gutter 遇到过这个问题) 是否可以只忽略特定错误?例如。该特定行上的 maxlen 仍然检测到其他错误。 感谢 // jshint ignore:line -- 与 ;(function() // jshint ignore:line 配合得很好 “忽略”选项已弃用,并且在 Eclipse 中使用 0.9.9 版的 JSHint 集成功能时出现错误“错误选项”。有没有其他方法可以做同样的事情? 我通过使用特定的option 来绕过bad option: 'ignore' 我想忽略的行。在我的情况下,我想忽略 if (x == null),因为我希望它不仅仅是 null,并在与 if 相同的函数中使用 /* jshint eqnull:true */ 来使 JSHint 静音。【参考方案2】:

正如您在documentation of JSHint 中看到的,您可以更改选项每个函数每个文件。在您的情况下,只需在您的文件中添加评论,或者在使用 eval 的函数中添加更多本地评论:

/*jshint evil:true */

function helloEval(str) 
    /*jshint evil:true */
    eval(str);

【讨论】:

fwiw,这对我来说不适用于 2.1.9,但在升级到 2.1.11 后工作【参考方案3】:

“邪恶”的答案对我不起作用。相反,我使用了 JSHints docs page 上推荐的内容。如果您知道引发的警告,则可以将其关闭以获取代码块。例如,我正在使用一些不使用驼峰函数的第三方代码,但我的 JSHint 规则需要它,这导致了警告。为了让它安静,我写道:

/*jshint -W106 */
save_state(id);
/*jshint +W106 */

【讨论】:

我该如何计算我的警告编号? 当你运行jshint最初得到错误时,会报数字。 哦,对不起。我忘了我留下了评论,所以在我检查了文档后没有发布任何东西。不是,您必须在命令中添加--verbose 才能获得警告编号。 另外,this related question 的答案建议检查messages.js。我发现这很有帮助,因为我使用了 WebStorm。 所有警告、错误和信息编号都可以在这里找到:github.com/jshint/jshint/blob/master/src/messages.js

以上是关于有没有办法抑制给定行的 JSHint 警告?的主要内容,如果未能解决你的问题,请参考以下文章

在 JSHint 中禁用有关“require”功能的警告

有没有办法抑制 Xcode 中的警告?

有没有办法在构建 Docker 映像时抑制“更新替代:警告:跳过创建”警告?

我可以使属性抑制警告吗?

抑制 Java 中不推荐使用的导入警告

防止 JSHint 警告“功能名称已定义但从未使用”