Подтвердить что ты не робот

JSLint: контроль комментариев (выборочное игнорирование)

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

4b9b3361

Ответ 1

Помещенный

/*ignore jslint start*/

до и

/*ignore jslint end*/ 

после игнорирования кода. Пример:

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

Или экспортируйте настройки JsLint, определите символы IgnoreErrorStart/IgnoreErrorEnd и импортируйте.


Edit
Некоторые люди могут путать этот ответ с JSHint. В этом случае используйте следующие функции:
/*jshint ignore:start*/
  <!-- code in here -->
/*jshint ignore:end*/

Взято из fooobar.com/questions/137663/...

Ответ 2

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

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

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

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

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

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

Существует полный список опций в документации.

Ответ 3

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

(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

Ничто здесь не ответило на этот вопрос, насколько я могу сказать. Следующий код по-прежнему дает мне ошибки проверки, и я не могу заставить JSLint принять, что у меня нет времени исправить действующее регулярное выражение прямо сейчас, учитывая ФАКТИЧЕСКИЕ ПРИОРИТЕТЫ.

Ошибка, которую я получаю, относится к unescaped '{' и может привести к тому, что моя новая профессиональная команда отклонит 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;
        }
    };
}());

Ответ 5

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

Ответ 6

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

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

Ответ 8

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