JSLint:控制注释(选择性忽略)

时间:2009-03-01 13:57:16

标签: javascript jslint lint

JSLint是否有类似JavaScript Lint的control comments(例如/*jsl:fallthru*/)以使其忽略某些段落?

9 个答案:

答案 0 :(得分:28)

/*ignore jslint start*/

之前和

/*ignore jslint end*/ 

之后要忽略的代码。例如:

function ignore(){
    /*ignore jslint start*/
    var x; var y;
    /*ignore jslint end*/
}

或导出JsLint设置,定义IgnoreErrorStart / IgnoreErrorEnd符号并导入。

<小时/> 的修改
有些人可能会将此答案与JSHint混淆。在这种情况下,请使用以下:

/*jshint ignore:start*/
  <!-- code in here -->
/*jshint ignore:end*/

取自https://stackoverflow.com/a/26012357/313501

答案 1 :(得分:19)

是。从文档[请注意,这是来自较旧版本的文档,但它仍然适用]:

  

JSLint的实现接受一个选项对象,该对象允许您确定可接受的JavaScript子集。也可以在脚本源中设置这些选项。

     

选项规范可能如下所示:

/*jslint nomen: true, debug: true,
  evil: false, vars: true */
  

选项规范以/ * jslint开头。请注意,j之前没有空格。规范包含一系列名称值对,其中名称是JSLint选项,值为true或false。选项规范优先于选项对象。

文档没有特别提及它,但您可以使用多个jslint注释在整个代码中启用和禁用不同的检查(感谢Dominic Mitchell)。

complete list of options in the documentation

答案 2 :(得分:5)

这是一个代码示例,以补充Matthew Crumley的优秀答案:

(function ($) {
  $.isValidEmail = function(email){
    /*jslint maxlen: 1000*/
    var EMAIL_REGEXP = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
    /*jslint maxlen: 200*/
    return EMAIL_REGEXP.test(email);
  };
}(jQuery));

答案 3 :(得分:4)

据我所知,这里没有任何内容可以回答这个问题。以下代码仍然给出了验证错误,我无法让JSLint接受我现在没有时间纠正正常工作的正则表达式给出了实际优先权。

我收到的错误是关于未转义的'{',可能会导致我的新专业团队拒绝JSLint作为可行的工具。关于我们更有效地发展的努力似乎没有办法让它闭嘴,这似乎有问题。

/*jslint browser: true, devel: true, todo: true, regexp: true */
/*global $ */
/*
    Abstract:
        + This module constitutes a layer of abstraction surrounding our bootstrap dependencies.
        + This module also contains some utility functions (so find a better place for them already!).
    Validation:
        + This module has been validated using JSLint (www.jslint.com).
*/
var shoelaceModule = (function () {
    'use strict';
    return {
        showModal: function ($target) {
            $target.modal('show');
        },

        hideModal: function ($target) {
            $target.modal('hide');
        },

        /*jsl:ignore */
        /*ignore jslint start */
        stringFormat: function (format) {
            var args = Array.prototype.slice.call(arguments, 1);
            return format.replace(/{([^{}]*)}/g, function (match, number) {
                return args[number] !== 'undefined' ? args[number] : match;
            });
        },
        /*ignore jslint end */
        /*jsl:end */

        init: function () {
            return this;
        }
    };
}());

答案 4 :(得分:3)

似乎不是这样。一些谷歌搜索发现了其他人的几篇帖子,以及JSLint人员的回复“修复代码而不是故意将其标记为有缺陷”。似乎并不完全友好。当然,也许在这种情况下你应该修改代码,但我留给你回答。

答案 5 :(得分:1)

您还可以:......

ignoreThis(); // jslint ignore:line

Is there a way to suppress JSHint warning for one given line?

答案 6 :(得分:0)

我要说,不,JSLint似乎没有一个简单的方法可以说'忽略这段代码',非常令我烦恼。单独禁用不同的选项,然后像Matt一样重新打开它们似乎应该可行,但它不会像JSHint的/* jshint ignore:start *//* jshint ignore:end */那样优雅。

我调查这个的原因是因为我使用的是Brackets,它附带了JSLint,因为它是默认的linter。我有一些缩小的第三方代码,我暂时复制到我的.js中,只要它在那里,JSLint就会抱怨。什么臭是我经常想早点粘贴一个缩小的块,这也是我希望linter看我的代码来帮助我排除模糊错误的时候。稍后我会用Grunt缩小和连接所有内容,但是不能在早期禁用它是真的,非常烦人。

答案 7 :(得分:0)

这似乎对我有用。 (使用zedapp中嵌入的jslint - zedapp.org)

&#13;
&#13;
/*jslint ignore:start*/
require([],function(require, exports, module) {
  /*jslint ignore:end*/
  
  var api = {
    life: {
      universe: {
        everything: function() {
          this.everything = {answer : 42};
        }
      }
    }
  };
 api.life.universe.everything.bind(api.life.universe)();
 console.log(JSON.stringify(api));

  /*jslint ignore:start*/
  return api;
});
/*jslint ignore:end*/
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
&#13;
&#13;
&#13;

答案 8 :(得分:-2)

/*jsl:ignore*//*jsl:end*/放在代码周围。