Existe uma maneira de suprimir o aviso JSHint para uma determinada linha?

264

Eu tenho um caso (único) no meu aplicativo onde evalestá sendo usado e gostaria de suprimir o aviso JSHint apenas para este caso.

Existe uma maneira de conseguir isso? Configuração, comentário mágico, ...?

Mike Aski
fonte

Respostas:

465

Sim, há um jeito. Dois de fato. Em outubro de 2013, o jshint adicionou uma maneira de ignorar blocos de código como este:

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

Você também pode ignorar uma única linha com um comentário à direita como este:

ignoreThis(); // jshint ignore:line
Jason Punyon
fonte
Para quem estiver tentando fazer com que os plugins JSHint Sublime Text 2/3 funcionem, será necessário atualizar o jshint especificamente na pasta do pacote ST. (I especificamente correu para isso com JSHint Gutter)
Josh
7
É possível ignorar apenas um erro específico? por exemplo. maxlen nessa linha específica e ainda assim detectar outros erros.
Jürgen Paul
4
graças a Deus // jshint ignore:line- funciona muito bem com;(function() { // jshint ignore:line
katy Lavallee
4
A opção "ignorar" está obsoleta e recebo o erro "opção ruim" usando a versão 0.9.9 do recurso JSHint Integration no eclipse. Existe uma maneira alternativa de fazer a mesma coisa?
MidnightJava
2
Eu contornei o bad option: 'ignore'usando a opção específica para a linha que eu quero que seja ignorada. No meu caso, eu queria ignorar if (x == null)porque quero que ele seja igual a mais do que nulo e usado /* jshint eqnull:true */na mesma função que o ifsilenciar JSHint.
Nate
102

A resposta "má" não funcionou para mim. Em vez disso, usei o que foi recomendado na página de documentos JSHints . Se você souber o aviso emitido, poderá desativá-lo para um bloco de código. Por exemplo, estou usando algum código de terceiros que não usa funções de maiúsculas e minúsculas, mas minhas regras JSHint exigem, o que levou a um aviso. Para silenciá-lo, escrevi:

/*jshint -W106 */
save_state(id);
/*jshint +W106 */
tollmanz
fonte
15
E como faço para descobrir meu número de aviso?
11684
3
Quando você executa o jshint e obtém o erro inicialmente, o número será relatado.
Tollmanz
5
Oh, desculpe. Esqueci que deixei um comentário, por isso não postei nada depois de verificar os documentos. Não é, você precisa adicionar --verboseao comando para obter o número de aviso.
11684
9
Como alternativa, a resposta para esta pergunta relacionada sugere verificar o messages.js . Achei isso bastante útil, pois uso o WebStorm.
Michael Jess
3
Todos os números de aviso, erro e informações podem ser encontrados aqui: github.com/jshint/jshint/blob/master/src/messages.js
Anderson Arboleya
37

Como você pode ver no documentação do JSHint, você pode alterar as opções por função ou por arquivo . No seu caso, basta colocar um comentário no seu arquivo ou ainda mais local apenas na função que usa eval:

/*jshint evil:true */

function helloEval(str) {
    /*jshint evil:true */
    eval(str);
}
Odi
fonte
fwiw, isso não funcionou para mim com 2.1.9, mas funcionou após a atualização para 2.1.11
kangax