Tslint: Mulai untuk mencela aturan tidak ada variabel yang tidak digunakan

Dibuat pada 13 Agu 2016  ·  30Komentar  ·  Sumber: palantir/tslint

Saya baru saja memperhatikan pemeriksaan kompiler baru ini di v2.0: --noUnusedParameters dan --noUnusedLocals . Ini pada dasarnya membuat aturan no-unused-variable menjadi usang. Karena ini adalah aturan inti, saya tidak berpikir kita harus segera menghapusnya.

Usul:

  • hapus no-unused-variable dari tslint:latest & tslint:recommended di v4.0
  • tandai aturan sebagai usang di v4.0

    • mungkin dalam pesan kegagalan?

  • hapus implementasi aturan sepenuhnya di TSLint v5.0
Won't Fix Breaking Change

Komentar yang paling membantu

Sebuah umpan balik kecil. Memiliki aturan ini di tslint benar-benar nyaman saat Anda mendapatkan peringatan linter, tetapi kode Anda masih dikompilasi. Saya, secara pribadi, merasa cukup menjengkelkan memiliki kegagalan kompiler karena variabel, parameter, atau impor yang tidak digunakan terutama ketika melakukan perubahan kode cepat seperti refactoring atau mencoba sebuah ide.

Semua 30 komentar

Sebuah fitur yang baik di sini adalah bahwa kompiler menyediakan opt-out: beri nama variabel garis bawah utama dan kompiler tidak akan menandainya. Ini akan memudahkan orang yang ingin mengaktifkan pemeriksaan kompiler tetapi mungkin memiliki satu atau dua kasus tepi yang tidak ingin mereka ubah.

@JKillian Itu hanya berlaku untuk parameter, kan?

@ Glen-84 - tangkapan bagus, saya pikir Anda benar.

@adidahiya hanya untuk dicatat bahwa --noUnusedLocals dan no-unused-variable beroperasi sangat berbeda.

--noUnusedLocals tampaknya juga memeriksa properti kelas (pada TS versi 2.0.2).

@charsleysa ya, implementasinya sedikit berbeda. Saya pikir opsi kompiler lebih baik daripada aturan TSLint, itulah sebabnya saya ingin mendukungnya. Seperti yang tercantum dalam posting masalah asli, kami akan menghapusnya perlahan dari inti TSLint.

Saya pikir Anda harus menghapusnya di versi 4. Seharusnya ada banyak rilis pratinjau di mana semua pengembang akan melihat peringatan penghentian. Dan Anda telah menghapus aturan lain yang mendukung opsi kompiler.

PD: Dalam rilis dev-1, saya pikir ini adalah pengaturan yang disarankan.

Sebagai sedikit umpan balik, saya menemukan masalah ini malam ini dan bahkan setelah menemukan masalah ini, saya perlu sedikit memahami bahwa --noUnusedLocals dan --noUnusedParameters adalah konfigurasi tsc dan bukan tslint. Mungkin berguna untuk mengklarifikasi itu dalam pesan kesalahan.

@ryanguil terima kasih atas umpan baliknya. Saya melakukan perubahan yang memperjelas pesan

Sebuah umpan balik kecil. Memiliki aturan ini di tslint benar-benar nyaman saat Anda mendapatkan peringatan linter, tetapi kode Anda masih dikompilasi. Saya, secara pribadi, merasa cukup menjengkelkan memiliki kegagalan kompiler karena variabel, parameter, atau impor yang tidak digunakan terutama ketika melakukan perubahan kode cepat seperti refactoring atau mencoba sebuah ide.

Kompiler menangani ini dengan cara yang lebih baik menurut saya, dan saya mendukung Anda dengan cara yang seharusnya tidak cukup kompilasi karena ini, tetapi jika Anda menggunakan sesuatu seperti webpack, misalnya, kesalahan akan dilemparkan tetapi kompilasi tidak akan berhenti.

Kepada @zubivan

Setuju. Saya lebih suka menyimpan peringatan ini di tahap serat. Alur kerja saya adalah:

any file/code changes => run ts-compile => run tests => run ts-lint

Saya dapat membuat perubahan kode kotor dengan cepat dan menguji hasilnya terlebih dahulu, dan kemudian memenuhi penjaga dari tslint. Memaksa Anda menulis kode bersih sebelum pengujian apa pun benar-benar menjengkelkan.

Kepada @michaeljota

Meskipun saya lebih suka menampilkan peringatan setelah pengujian, apakah ada contoh webpack untuk mencapai tujuan?

Saya ingin tahu apakah TSLint bisa menjalankan kompiler, dan mengurai dan menampilkan peringatannya sebagai peringatan TSLint? ini akan membebaskan TSLint dari keharusan mempertahankan implementasi aturan, tetapi akan membiarkan pengguna tetap dapat menggunakan komentar nonaktifkan/abaikan TSLint yang berguna di antara keuntungan lainnya.

@xareelee di profil saya, Anda dapat melihat pengaturan Angular 2 dengan kompilasi TS tanpa melempar.

Saya tidak mengerti mengapa ini adalah bagian dari kompiler. Mereka murni gaya, tidak memengaruhi kebenaran kode, sehingga tampak lebih alami sebagai opsi linter. Saya juga ingin kemampuan untuk mengesampingkan peringatan ini dalam kasus-kasus tertentu, yang dapat saya lakukan dengan tslint tetapi tidak dengan tsc.

Mengapa ini adalah bagian dari kompiler sekarang, itu bukan sesuatu untuk dibahas di sini. Saya tidak berpikir mereka akan membaca aturan ini, karena alasan yang sudah terungkap.

Untuk semua orang yang mencari solusi tentang ini karena mereka tidak ingin menggunakan opsi kompiler karena fakta bahwa mereka akan mencegah dev lokal cepat (mengomentari beberapa kode, dll. akan gagal transpilasi), Anda dapat melakukan sesuatu seperti ini:

const Rule = require('tslint/lib/rules/noUnusedVariableRule').Rule;

// Hide deprecation message
Rule.metadata.deprecationMessage = '';
Rule.metadata.ruleName = 'no-unused-variable-wrapped';

module.exports.Rule = Rule;

dalam aturan Anda sendiri noUnusedVariableWrapped.js file dan kemudian aktifkan melalui "no-unused-variable-wrapped": true .

Saya ingin mencatat bahwa satu hal yang hilang dengan bergantung pada aturan kompiler dan bukan aturan tslint adalah kemampuan untuk memperbaiki otomatis dan menghapus impor/variabel yang tidak digunakan.

Sepertinya ada banyak minat untuk mempertahankan aturan ini. Saya melanjutkan dan menggabungkan #2256, yang membatalkan aturan tersebut. Itu masih tidak akan didorong dalam konfigurasi bawaan, tetapi akan tersedia berdasarkan keikutsertaan.

Sepertinya jika Anda tsconfig Anda memiliki "jsx": "react" maka tslint akan membuat kesalahan karena melewatkan impor reaksi.

@ccorcos "impor yang hilang" adalah kesalahan yang sama sekali berbeda dari "tidak ada variabel yang tidak digunakan". tsc seharusnya membantu Anda di luar sana.

kedengarannya bagus. saya hanya tidak melihat kesalahan ini di VSCode... :/

Hai @adidahiya ,

Terima kasih telah mengambil kembali aturan ini. Pertanyaannya, kapan akan dirilis? Seperti yang saya lihat belum termasuk dalam 5.1.0.

@javier-tarazaga itu ada di v5, seperti biasanya. itu tidak diaktifkan dalam konfigurasi tslint:recommended sekalipun.

Hai @adidahiya ,

Hmm aneh. Ketika saya memasukkan aturan dalam versi tslint 5.1.0 saya mendapatkan kesalahan berikut,

Could not find implementations for the following rules specified in the configuration:
    no-unused-vars
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.

Itu karena Anda menggunakan nama file yang salah. Ini bukan variabel yang tidak digunakan, bukan
tidak-tidak-digunakan-vars

Am 02.05.2017 09:33 schrieb "Javier Tarazaga" [email protected] :

Hai @adidahiya https://github.com/adidahiya ,

Hmm aneh. Ketika saya memasukkan aturan dalam versi tslint 5.1.0 saya mendapatkan
kesalahan berikut,

Tidak dapat menemukan implementasi untuk aturan berikut yang ditentukan dalam konfigurasi:
tidak-tidak-digunakan-vars
Coba perbarui TSLint dan/atau pastikan Anda telah menginstal semua aturan khusus yang diperlukan.
Jika TSLint baru saja ditingkatkan, Anda mungkin memiliki aturan lama yang dikonfigurasi yang perlu dibersihkan.


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/palantir/tslint/issues/1481#issuecomment-298527837 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/ALaeKKYydi8vQ8MAhxOwBk3uL02jgzKNks5r1txLgaJpZM4JjuQh
.

Terimakasih atas peringatannya! Sekarang saya menghadapi #2650 jadi saya tidak bisa memverifikasinya.

Saya menginstal https://github.com/blakeembrey/tslint-config-standard
Apakah ada cara untuk menghilangkan peringatan ini, saya tidak yakin apakah itu terkait dengan standar atau hanya tslint

> [email protected] lint /Users/nikos/WebstormProjects/common
> tslint 'src/**/*.ts' 'test/**/*.ts'

Warning: The 'await-promise' rule requires type information.
Warning: The 'no-unused-variable' rule requires type information.
Warning: The 'no-use-before-declare' rule requires type information.
Warning: The 'return-undefined' rule requires type information.
Warning: The 'no-floating-promises' rule requires type information.
Warning: The 'no-unnecessary-qualifier' rule requires type information.
Warning: The 'no-unnecessary-type-assertion' rule requires type information.
Warning: The 'strict-type-predicates' rule requires type information.

@QuantumInformation Sudahkah Anda mencoba menggunakan --project ?

Ya itu bekerja thx

Bunyi bip! TSLint tidak digunakan lagi dan Anda harus beralih ke TypeScript-eslint ! 🤖.

Masalah ini sedang dikunci untuk mencegah diskusi lebih lanjut yang tidak perlu. Terima kasih! 👋.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ypresto picture ypresto  ·  3Komentar

dashmug picture dashmug  ·  3Komentar

jacob-robertson picture jacob-robertson  ·  3Komentar

ghost picture ghost  ·  3Komentar

denkomanceski picture denkomanceski  ·  3Komentar