Kami menggunakan pylint dalam sistem build kami. Kami memiliki paket python dalam basis kode kami yang memiliki kode sekali pakai, dan saya ingin menonaktifkan semua peringatan untuk modul sementara sehingga saya dapat berhenti mengganggu pengembang lain dengan pesan yang berlebihan ini. Apakah ada cara mudah untuk mendapatkan pylint: disable
semua peringatan untuk sebuah modul?
90
PyLint memiliki lima "kategori" untuk pesan (yang saya ketahui).
Kategori ini sangat jelas di masa lalu, tetapi pesan Pylint bernomor sekarang telah diganti dengan nama. Misalnya
C0302
sekarangtoo-many-lines
. Tetapi 'C' memberi tahu kita bahwa itutoo-many-lines
adalah pesan Konvensi . Ini membingungkan, karena pesan Konvensi sering kali hanya muncul sebagai peringatan, karena banyak sistem (seperti Syntastic ) yang tampaknya mengklasifikasikan semuanya sebagai peringatan atau kesalahan. Namun, laporan PyLint masih memecah semuanya ke dalam kategori ini, jadi itu masih didukung.Pertanyaan Anda secara khusus mengacu pada Peringatan , dan semua nama pesan Peringatan PyLint dimulai dengan 'W'.
Agak sulit bagi saya untuk melacaknya, tetapi jawaban ini akhirnya membawa saya ke jawabannya. PyLint masih mendukung penonaktifan seluruh kategori pesan. Jadi, untuk menonaktifkan semua Peringatan , Anda akan melakukan:
Ini dapat digunakan di baris perintah:
Atau, Anda dapat meletakkannya di file pylintrc Anda:
Catatan: Anda mungkin sudah memiliki
disable
opsi di file rc Anda, dalam hal ini Anda harus menambahkan 'W' ke daftar ini.Atau, Anda dapat meletakkannya sebaris di kode Anda, yang akan berfungsi untuk ruang lingkup tempatnya ditempatkan:
# pylint: disable=W
Untuk menonaktifkannya untuk seluruh file, yang terbaik adalah meletakkannya di bagian paling atas file. Namun, bahkan di bagian paling atas file, saya menemukan saya masih mendapatkan
trailing-newlines
pesan peringatan (secara teknis peringatan konvensi , tetapi saya mendapatkan itu).Dalam kasus saya, saya memiliki perpustakaan yang ditulis oleh seseorang dari masa lalu. Ini bekerja dengan baik, jadi tidak perlu khawatir tentang konvensi Python modern, dll. Yang benar-benar saya pedulikan adalah kesalahan yang mungkin akan merusak kode saya.
Solusi saya adalah menonaktifkan semua pesan Peringatan , Konvensi , dan Refactoring untuk satu file ini hanya dengan menempatkan perintah PyLint berikut di baris pertama:
# pylint: disable=W,C,R
Selain dari pesan yang disebutkan di atas untuk mengikuti baris baru, ini persis seperti yang saya butuhkan.
sumber
Ya, Anda dapat menentukannya
# pylint: skip-file
dalam file, tetapi merupakan praktik yang buruk untuk menonaktifkan semua peringatan untuk sebuah file.Jika Anda ingin menonaktifkan peringatan tertentu saja, ini dapat dilakukan dengan menambahkan komentar seperti
# pylint: disable=message-name
menonaktifkan pesan tertentu untuk sisa file, atau setidaknya hingga# pylint: enable=message-name
.Contoh:
# pylint: disable=no-member class C123: def __init__(self): self.foo_x = self.bar_x # pylint: enable=no-member class C456: def __init__(self): self.foo_x = self.bar_x
sumber
disable=locally-disabled
dapat ditambahkan ke pylintrc.Opsi lainnya adalah menggunakan
--ignore
opsi baris perintah untuk melewati analisis untuk beberapa file.sumber
Kasus penggunaan saya adalah menjalankan
pylint *.py
untuk memproses semua file dalam direktori, kecuali bahwa saya ingin melewatkan satu file tertentu.Menambahkan
#pylint: skip-file
pilint yang menyebabkan kegagalanI: 8, 0: Ignoring entire file (file-ignored)
. Menambahkan#pylint: disable=file-ignored
tidak memperbaikinya. Agaknya, ini adalah kesalahan global daripada kesalahan khusus file.Solusinya adalah memasukkan
--disable=file-ignored
dalam opsi perintah pylint. Terlalu lama untuk memikirkannya; seharusnya tidak adafile-ignored
kesalahan saat Anda mengabaikan file secara eksplisit.sumber
pylintrc
file konfigurasi, bukan di opsi perintah.