JSLint: управляющие комментарии (выборочное игнорирование) - PullRequest
44 голосов
/ 01 марта 2009

Имеет ли JSLint что-то вроде управляющих комментариев (например, /*jsl:fallthru*/) JavaScript Lint, чтобы игнорировать определенные отрывки?

Ответы [ 9 ]

28 голосов
/ 01 ноября 2012

Помещенный

/*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

19 голосов
/ 01 марта 2009

Да. Из документации [обратите внимание, что это из более старой версии документации, но она все еще применяется]:

Реализация JSLint принимает объект option, который позволяет вам определить подмножество JavaScript, которое является приемлемым для вас. Также возможно установить эти параметры в источнике скрипта.

Спецификация опции может выглядеть так:

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

Спецификация опции начинается с / * jslint. Обратите внимание, что до j нет места. Спецификация содержит последовательность пар имя-значение, где имена являются опциями JSLint, а значения - true или false. Спецификация опции имеет приоритет над объектом опции.

В документации об этом не говорится, но вы можете включать и отключать различные проверки по всему коду с помощью нескольких комментариев jslint (спасибо Доминику Митчеллу).

В документации имеется полный список опций .

5 голосов
/ 30 декабря 2011

Вот пример кода, дополняющий отличный ответ Мэтью Крамли:

(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));
4 голосов
/ 24 ноября 2014

Ничто здесь не ответило на этот вопрос, насколько я могу сказать. Следующий код все еще дает мне ошибки проверки, и я не могу заставить 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;
        }
    };
}());
3 голосов
/ 01 марта 2009

Это не так. Некоторые Googling находят несколько сообщений от других и ответы людей из JSLint в духе «Исправьте свой код вместо того, чтобы помечать его намеренно дефектным». Не кажется полностью дружелюбным. Конечно, может быть, в этом случае вам следует просто исправить код, но я оставляю это для вас, чтобы ответить.

1 голос
/ 17 апреля 2015
0 голосов
/ 23 января 2018

Кажется, это работает для меня. (используя jslint, встроенный в zedapp - zedapp.org)

/*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*/
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.js"></script>
0 голосов
/ 07 апреля 2015

Я собираюсь сказать, что нет. JSLint, похоже, не имеет простого способа сказать: «игнорировать этот блок кода», к моему большому раздражению. Индивидуальное отключение различных опций, а затем их повторное включение, как Мэтт, кажется, должно работать, но это не будет элегантно, как у JSHint /* jshint ignore:start */, /* jshint ignore:end */.

Причина, по которой я это изучал, заключается в том, что я использую Brackets , который поставляется с JSLint в качестве линтера по умолчанию. У меня есть какой-то уменьшенный сторонний код, который я временно скопировал в свой .js, и пока он там, JSLint будет жаловаться. Что воняет, я часто хочу вставить минифицированный кусок на ранней стадии, и это также, когда я хочу, чтобы линтер посмотрел на мой код, чтобы помочь мне исключить неясные ошибки. Позже я просто минимизирую и объединяю все с Grunt, но невозможность отключить его для блока на ранних этапах действительно очень раздражает.

0 голосов
/ 01 марта 2010

Положите /*jsl:ignore*/ и /*jsl:end*/ вокруг кода.

...