Есть ли способ подавить предупреждение JSHint для одной данной строки?

264

У меня есть (один) случай в моем приложении были eval использовался, и я хотел бы отменить предупреждение JSHint только для этого случая.

Есть ли способ достичь этого? Конфигурация, волшебный комментарий, ...?

Майк Аски
источник

Ответы:

465

Да, есть способ. Два на самом деле. В октябре 2013 года jshint добавил способ игнорировать блоки кода следующим образом:

// 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, вам нужно обновить jshint специально в папке пакета ST. (Я специально столкнулся с этим с JSHint Gutter)
Джош
7
Можно ли игнорировать только конкретную ошибку? например. Maxlen на этой конкретной линии, но все еще обнаруживают другие ошибки.
Юрген Павел
4
Слава Богу // jshint ignore:line- прекрасно работает с;(function() { // jshint ignore:line
Кэти Лавалле
4
Опция "ignore" устарела, и я получаю ошибку "bad option", используя версию 0.9.9 функции интеграции JSHint в eclipse. Есть ли альтернативный способ сделать то же самое?
MidnightJava
2
Я обошел все вокруг bad option: 'ignore', используя конкретную опцию для строки, которую я хочу игнорировать. В моем случае я хотел игнорировать, if (x == null)потому что я хочу, чтобы он был больше, чем просто ноль, и использовался /* jshint eqnull:true */в той же функции, что и ifдля отключения JSHint.
Нейл
102

«Злой» ответ не сработал для меня. Вместо этого я использовал то, что было рекомендовано на странице документации JSHints . Если вы знаете, что выдается предупреждение, вы можете отключить его для блока кода. Например, я использую какой-то сторонний код, который не использует функции наблюдения за верблюдами, но мои правила JSHint требуют этого, что привело к предупреждению. Чтобы заставить его замолчать, я написал:

/*jshint -W106 */
save_state(id);
/*jshint +W106 */
tollmanz
источник
15
И как мне узнать номер моего предупреждения?
11684
3
Когда вы запустите jshint и сначала получите сообщение об ошибке, число будет сообщено.
Tollmanz
5
Ой, извини. Я забыл, что оставил комментарий, поэтому ничего не опубликовал после того, как проверил документы. Это не так, вы должны добавить --verboseв команду, чтобы получить номер предупреждения.
11684
9
Кроме того, ответ на этот связанный с этим вопрос предлагает проверить messages.js . Я нашел это весьма полезным, так как я использую WebStorm.
Майкл Джесс
3
Все номера предупреждений, ошибок и информации можно найти здесь: github.com/jshint/jshint/blob/master/src/messages.js
Андерсон Арболея
37

Как вы можете видеть в документации JSHint, вы можете изменять параметры для каждой функции или для каждого файла . В вашем случае просто поместите комментарий в свой файл или даже более локально только в функции, которая использует eval:

/*jshint evil:true */

function helloEval(str) {
    /*jshint evil:true */
    eval(str);
}
Оди
источник
между прочим, это не работало для меня с 2.1.9, но работало после обновления до 2.1.11
kangax