Saya mencoba menonaktifkan peringatan C0321 ("lebih dari satu pernyataan pada satu baris" - Saya sering meletakkan if
pernyataan dengan hasil garis tunggal pendek pada baris yang sama), dalam Pylint 0.21.1 (jika penting: astng 0.20. 1, umum 0,50,3, Python 2.6.6 (r266: 84292, 15 Sep 2010, 16:22:56)).
Saya sudah mencoba menambahkan disable=C0321
dalam file konfigurasi Pylint, tetapi Pylint tetap bersikeras untuk melaporkannya. Variasi pada baris yang (seperti disable=0321
atau disable=C321
) yang ditandai sebagai kesalahan, sehingga Pylint tidak mengenali pilihan dengan benar, itu hanya mengabaikannya.
Apakah ini bug Pylint, atau saya melakukan sesuatu yang salah? Apakah ada cara untuk mengatasi ini? Saya benar-benar ingin menghilangkan beberapa kebisingan ini.
Jawaban:
pylint --generate-rcfile
menunjukkannya seperti ini:Jadi sepertinya Anda
~/.pylintrc
harus memilikidisable=
baris di bagian dalam[MESSAGES CONTROL]
.sumber
~/.pylintrc
dengan dua baris,[MESSAGES CONTROL]
dandisable=C0321
. Itu mencegah pesan itu.Saya punya masalah ini menggunakan Eclipse dan menyelesaikannya sebagai berikut:
di folder pylint (mis.
C:\Python26\Lib\site-packages\pylint
), tahan shift, klik kanan dan pilih untuk membuka perintah windows di folder itu. Tipe:Ini menciptakan
standard.rc
file konfigurasi. Buka di notepad dan di bawah[MESSAGES CONTROL]
, batalkan komentardisable=
dan tambahkan ID pesan yang ingin Anda nonaktifkan, misalnya:Simpan file, dan di Eclipse-> window-> preferensi-> PyDev-> pylint, di kotak argumen, ketik:
Sekarang itu seharusnya bekerja ...
Anda juga dapat menambahkan komentar di bagian atas kode Anda yang akan ditafsirkan oleh pylint:
tautan ke semua kode pesan pylint
Menambahkan mis.
--disable-ids=C0321
Di kotak argumen tidak berfungsi. Semua pesan pylint yang tersedia disimpan dalam kamus_messages
, atribut dari instancepylint.utils.MessagesHandlerMixIn
kelas. Saat menjalankan pylint dengan argumen--disable-ids=...
(setidaknya tanpa file konfigurasi), kamus ini awalnya kosong, meningkatkan pengecualian KeyError dalam pylint (pylint.utils.MessagesHandlerMixIn.check_message_id()
. Dalam Eclipse, Anda dapat melihat pesan kesalahan ini di Konsol Pylint (windows - show view - Console , pilih konsol Pylint dari opsi konsol selain ikon konsol.)sumber
Mulai dari Pylint v. 0.25.3, Anda dapat menggunakan nama simbolis untuk menonaktifkan peringatan alih-alih harus mengingat semua nomor kode itu . Misalnya:
Gaya ini lebih instruktif daripada kode kesalahan kriptik, dan juga lebih praktis karena versi Pylint yang lebih baru hanya menampilkan nama simbolik, bukan kode kesalahan.
Korespondensi antara nama dan kode simbolis dapat ditemukan di sini .
Komentar penonaktifan dapat disisipkan pada barisnya sendiri, menerapkan penonaktifan untuk semua yang terjadi setelah di blok yang sama. Atau, itu dapat dimasukkan pada akhir baris yang dimaksudkan untuk diterapkan.
Jika pylint menampilkan
Locally disabling
pesan " ", Anda dapat menghilangkannya dengan memasukkan cacatlocally-disabled
terlebih dahulu seperti pada contoh di atas.sumber
# pylint: disable=foo
inlyne membuat saya berbaris terlalu lama, jadi sekarang saya perlu menambahkan, line-too-long
! Lidah di pipi; inilah yang saya butuhkan dan menyelesaikan masalah saya. Terima kasih!Untuk menonaktifkan peringatan secara lokal di blok, tambahkan
ke blok itu.
sumber
[pylint] C0111: Missing method docstring
, jadi menemukan nomor kode itu mudah, tetapi menemukan nama simbolis berarti saya harus mencarinya.Ada beberapa cara untuk menonaktifkan peringatan & kesalahan dari Pylint. Yang mana yang harus digunakan berkaitan dengan seberapa global atau lokal Anda ingin menerapkan kecacatan - keputusan desain yang penting.
Berbagai Pendekatan
pylintrc
file.Ini melibatkan lebih dari
~/.pylintrc
file (dalam direktori $ HOME Anda) seperti yang dijelaskan oleh Chris Morgan. Pylint akan mencari file rc, dengan prioritas yang lebih menghargai file "lebih dekat":Sebuah
pylintrc
file dalam direktori kerja saat ini; atauJika direktori kerja saat ini dalam modul Python (yaitu berisi
__init__.py
file), mencari hierarki modul Python sampaipylintrc
file ditemukan; atauFile dinamai oleh variabel lingkungan PYLINTRC; atau
Jika Anda memiliki direktori home yang bukan
/root
:~/.pylintrc
; atau~/.config/pylintrc
; atau/etc/pylintrc
Perhatikan bahwa sebagian besar file ini diberi nama
pylintrc
- hanya file dalam yang~
memiliki titik terkemuka.Ke
pylintrc
file Anda , tambahkan baris untuk menonaktifkan pesan pylint tertentu. Sebagai contoh:Lebih lanjut menonaktifkan dari
pylint
baris perintah, seperti yang dijelaskan oleh Aboo dan Cairnarvon. Ini sepertipylint --disable=bad-builtin
. Ulangi--disable
untuk menekan item tambahan.Lebih lanjut menonaktifkan dari baris kode Python individu, seperti yang dijelaskan oleh Imolit. Ini terlihat seperti
some statement # pylint: disable=broad-except
(komentar tambahan di akhir baris sumber asli) dan hanya berlaku untuk baris saat ini . Pendekatan saya adalah untuk selalu meletakkan ini di akhir baris kode lain sehingga mereka tidak akan bingung dengan gaya blok, lihat di bawah.Lebih lanjut menonaktifkan didefinisikan untuk blok kode Python yang lebih besar, hingga menyelesaikan file sumber.
Ini terlihat seperti
# pragma pylint: disable=bad-whitespace
(perhatikanpragma
kata kuncinya).Ini berlaku untuk setiap baris setelah pragma. Menempatkan blok ini di bagian atas file membuat penindasan berlaku untuk seluruh file. Menempatkan blok yang sama lebih rendah dalam file membuatnya berlaku hanya untuk baris yang mengikuti blok. Pendekatan saya adalah untuk selalu menempatkan ini pada baris mereka sendiri sehingga mereka tidak akan bingung dengan gaya single-line, lihat di atas.
Ketika penindasan seharusnya hanya berlaku dalam rentang kode, gunakan
# pragma pylint: enable=bad-whitespace
(sekarang menggunakanenable
tidakdisable
) untuk berhenti menekan.Perhatikan bahwa penonaktifan untuk satu baris menggunakan
# pylint
sintaks sementara penonaktifan untuk baris ini dan seterusnya menggunakan# pragma pylint
sintaksis. Ini mudah membingungkan terutama ketika menyalin & menempel.Menyatukan Semuanya
Saya biasanya menggunakan campuran pendekatan ini.
Saya menggunakan
~/.pylintrc
untuk standar yang benar-benar global - sangat sedikit di antaranya.Saya menggunakan tingkat proyek
pylintrc
pada tingkat yang berbeda dalam modul Python ketika ada standar khusus proyek. Terutama ketika Anda menerima kode dari orang atau tim lain, Anda mungkin menemukan mereka menggunakan konvensi yang tidak Anda sukai, tetapi Anda tidak ingin mengerjakan ulang kode tersebut. Menjaga pengaturan pada level ini membantu tidak menyebarkan praktik-praktik tersebut ke proyek lain.Saya menggunakan pragma gaya blok di bagian atas file sumber tunggal. Saya suka mematikan pragma (berhenti menekan pesan) di tengah panasnya pengembangan bahkan untuk standar Pylint yang tidak saya setujui (seperti "terlalu sedikit metode publik" - Saya selalu mendapatkan peringatan tentang kelas pengecualian khusus) - tetapi sangat membantu untuk melihat lebih banyak / mungkin semua pesan Pylint saat Anda sedang berkembang. Dengan begitu Anda dapat menemukan kasus yang ingin Anda atasi dengan pragma satu jalur (lihat di bawah), atau cukup tambahkan komentar untuk pengembang berikutnya untuk menjelaskan mengapa peringatan itu OK dalam kasus ini.
Saya membiarkan beberapa pragma gaya blok diaktifkan walaupun kode sudah siap untuk check-in. Saya mencoba menggunakan beberapa di antaranya, tetapi ketika masuk akal untuk modul, tidak apa-apa untuk melakukan dokumentasi. Namun saya mencoba untuk meninggalkan sesedikit mungkin, lebih disukai tidak ada.
Saya menggunakan gaya single-line-comment untuk mengatasi kesalahan yang sangat potensial. Sebagai contoh, jika ada tempat di mana itu benar-benar masuk akal untuk dilakukan
except Exception as exc
, saya meletakkan# pylint: disable=broad-except
garis itu daripada pendekatan yang lebih global karena ini adalah pengecualian aneh dan perlu dipanggil, pada dasarnya sebagai bentuk dokumentasi.Seperti semua hal lain dalam Python, Anda dapat bertindak pada berbagai tingkat tipuan. Saran saya adalah untuk memikirkan apa yang termasuk dalam level apa sehingga Anda tidak berakhir dengan pendekatan yang terlalu lunak untuk Pylint.
sumber
~/.pylintrc
. IMHO, konfigurasi biasanya harus diikat ke proyek, dan itu harus di suatu tempat di dalam proyek. Hanya dengan demikian dapat dikontrol versi dan dibagikan dengan proyek. Gagal ini, klon mungkin tidak memiliki kustomisasi yang diperlukan untuk pylint untuk keluar tanpa mencetak pesan.pragma
sepertinya sama sekali tidak perlu. Sebagai contoh, saya ada# pylint: disable=missing-docstring
di bagian atas file saya, dan itu berlaku untuk seluruh sisa file. Silakan periksa dan hapuspragma
awalan dari jawaban Anda.Anda juga dapat menggunakan perintah berikut:
Versi pylint saya adalah 0.25.1.
sumber
--py3k
baik :(rc
file, dan (lebih bermasalah) itu benar-benar menghasilkanrc
file yang benar--generate-rcfile
. Harus mendapatkan kode cinta dengan beberapa cabang yang melakukan hal yang sama :(Ini adalah FAQ :
Anda dapat menonaktifkan pesan dengan:
E1101
,E1102
dllno-member
,undefined-variable
dllpylint --list-groups
.C
,R
,W
, dllall
.Lihat dokumen (atau jalankan
pylint --list-msgs
di terminal) untuk daftar lengkappylint
pesan. Dokumen juga memberikan contoh yang bagus tentang bagaimana menggunakan fitur ini.sumber
Anda hanya perlu menambahkan satu baris untuk menonaktifkan apa yang ingin Anda nonaktifkan. Misalnya
Tambahkan ini di # 1 di modul Anda
sumber
Dalam hal ini membantu seseorang, jika Anda menggunakan Visual Studio Code, ia mengharapkan file berada dalam pengkodean UTF8. Untuk menghasilkan file, saya berlari
pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
di PowerShell.sumber
Sesuai dokumentasi pylint , yang paling mudah adalah menggunakan bagan ini :
Jadi seseorang dapat menggunakan:
sumber
Sintaksis python mengizinkan lebih dari satu pernyataan pada satu baris, dipisahkan oleh tanda titik koma (;). Namun, membatasi setiap baris ke satu pernyataan memudahkan manusia untuk mengikuti logika program saat membacanya.
Jadi, cara lain untuk memecahkan masalah ini, adalah untuk memahami mengapa pesan serat ada di sana dan tidak menempatkan lebih dari satu pernyataan pada satu baris.
Ya, Anda mungkin merasa lebih mudah untuk menulis beberapa pernyataan per baris, namun pylint untuk setiap pembaca kode Anda bukan hanya Anda.
sumber
Anda mungkin ingin mencoba ini:
Sunting "C: \ Users \ User \ AppData \ Roaming \ Code \ User \ settings.json" dan tambahkan
python.linting.pylintArgs
baris di akhir seperti yang ditunjukkan di bawah ini:sumber