Pylint menonaktifkan semua peringatan untuk sebuah file

90

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: disablesemua peringatan untuk sebuah modul?

mvanveen.dll
sumber

Jawaban:

127

Dari FAQ PyLint

Dengan Pylint <0,25, tambahkan

# pylint: disable-all

di awal modul.

Pylint 0.26.1 dan lebih tinggi telah mengganti nama direktif itu menjadi

# pylint: skip-file

(tapi versi pertama akan disimpan untuk kompatibilitas ke belakang).

Untuk memudahkan menemukan modul mana yang diabaikan, pesan tingkat Informasi I0013 dipancarkan. Dengan versi terbaru Pylint, jika Anda menggunakan sintaks lama, pesan I0014 tambahan akan dikeluarkan.

enderskill
sumber
2
Catatan: ini akan menonaktifkan semua peringatan dan semua kesalahan . Jika Anda mencari cara untuk menonaktifkan peringatan saja , lihat jawaban saya di halaman ini.
eatcrayons
32

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 C0302sekarang too-many-lines. Tetapi 'C' memberi tahu kita bahwa itu too-many-linesadalah 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:

disable=W

Ini dapat digunakan di baris perintah:

$ pylint --disable=W myfile.py

Atau, Anda dapat meletakkannya di file pylintrc Anda:

[MESSAGES CONTROL]
disable=W

Catatan: Anda mungkin sudah memiliki disableopsi 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-newlinespesan 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.

makan krayon
sumber
17

Ya, Anda dapat menentukannya # pylint: skip-filedalam 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-namemenonaktifkan 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
Acumenus
sumber
Untuk menghindari diberitahu bahwa peringatan khusus telah dinonaktifkan seperti ini disable=locally-disableddapat ditambahkan ke pylintrc.
Kolonel Fazackerley
7

Opsi lainnya adalah menggunakan --ignoreopsi baris perintah untuk melewati analisis untuk beberapa file.

sthenault
sumber
0

Kasus penggunaan saya adalah menjalankan pylint *.pyuntuk memproses semua file dalam direktori, kecuali bahwa saya ingin melewatkan satu file tertentu.

Menambahkan #pylint: skip-filepilint yang menyebabkan kegagalan I: 8, 0: Ignoring entire file (file-ignored). Menambahkan #pylint: disable=file-ignoredtidak memperbaikinya. Agaknya, ini adalah kesalahan global daripada kesalahan khusus file.

Solusinya adalah memasukkan --disable=file-ignoreddalam opsi perintah pylint. Terlalu lama untuk memikirkannya; seharusnya tidak ada file-ignoredkesalahan saat Anda mengabaikan file secara eksplisit.

Singkat
sumber
1
Idealnya, taruh di pylintrcfile konfigurasi, bukan di opsi perintah.
Acumenus