Apakah ada cara untuk menekan peringatan JSHint untuk satu baris tertentu?

264

Saya memiliki kasus (tunggal) di aplikasi saya yang evaldigunakan, dan saya ingin menekan peringatan JSHint hanya untuk kasus ini.

Apakah ada cara untuk mencapainya? Konfigurasi, komentar ajaib, ...?

Mike Aski
sumber

Jawaban:

465

Ya ada jalan. Sebenarnya dua. Pada bulan Oktober 2013 jshint menambahkan cara untuk mengabaikan blok kode seperti ini:

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

Anda juga dapat mengabaikan satu baris dengan komentar tambahan seperti ini:

ignoreThis(); // jshint ignore:line
Jason Punyon
sumber
Bagi siapa pun yang mencoba agar plugin JSHint Sublime Text 2/3 berfungsi, Anda perlu meningkatkan jshint secara khusus di folder paket ST. (Saya secara khusus berlari ke ini dengan JSHint Gutter)
Josh
7
Apakah mungkin untuk mengabaikan kesalahan tertentu saja? misalnya. maxlen pada baris tertentu itu masih mendeteksi kesalahan lain.
Jürgen Paul
4
Syukurlah untuk // jshint ignore:line- bekerja hebat dengan;(function() { // jshint ignore:line
katy lavallee
4
Opsi "abaikan" sudah tidak digunakan lagi, dan saya mendapatkan "opsi buruk" yang salah menggunakan versi 0.9.9 fitur JSHint Integration in eclipse. Apakah ada cara alternatif untuk melakukan hal yang sama?
MidnightJava
2
Saya menyiasati bad option: 'ignore'dengan menggunakan opsi spesifik untuk baris yang ingin saya abaikan. Dalam kasus saya, saya ingin mengabaikan if (x == null)karena saya ingin sama dengan lebih dari nol dan digunakan /* jshint eqnull:true */dalam fungsi yang sama dengan ifuntuk membungkam JSHint.
Nate
102

Jawaban "jahat" tidak berhasil untuk saya. Sebagai gantinya, saya menggunakan apa yang direkomendasikan pada halaman dokumen JSHints . Jika Anda tahu peringatan yang dilemparkan, Anda dapat mematikannya untuk satu blok kode. Misalnya, saya menggunakan beberapa kode pihak ketiga yang tidak menggunakan fungsi case unta, namun aturan JSHint saya mengharuskannya, yang menyebabkan peringatan. Untuk membungkamnya, saya menulis:

/*jshint -W106 */
save_state(id);
/*jshint +W106 */
tollmanz
sumber
15
Dan bagaimana cara mengetahui nomor peringatan saya?
11684
3
Ketika Anda menjalankan jshint dan mendapatkan kesalahan pada awalnya, nomor tersebut akan dilaporkan.
tollmanz
5
Oh maaf. Saya lupa saya meninggalkan komentar, jadi tidak memposting sesuatu setelah saya memeriksa dokumen. Bukan, Anda harus menambahkan --verboseperintah untuk mendapatkan nomor peringatan.
11684
9
Atau, jawaban untuk pertanyaan terkait ini menyarankan memeriksa messages.js . Saya menemukan ini cukup membantu karena saya menggunakan WebStorm.
Michael Jess
3
Semua nomor peringatan, kesalahan, dan info dapat ditemukan di sini: github.com/jshint/jshint/blob/master/src/messages.js
Anderson Arboleya
37

Seperti yang Anda lihat dalam dokumentasi JSHint, Anda dapat mengubah opsi per fungsi atau per file . Dalam kasus Anda, cukup beri komentar di file Anda atau bahkan lebih lokal hanya di fungsi yang menggunakan eval:

/*jshint evil:true */

function helloEval(str) {
    /*jshint evil:true */
    eval(str);
}
Odi
sumber
fwiw, ini tidak berhasil untuk saya dengan 2.1.9 tetapi bekerja setelah meningkatkan ke 2.1.11
kangax