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

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

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

【问题讨论】:

    标签: 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
    猜你喜欢
    • 2010-09-16
    • 2014-09-25
    • 2018-11-02
    • 2023-01-31
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多