Apakah mungkin untuk mengabaikan satu baris tertentu dengan pylint?


150

Saya memiliki baris berikut di header saya:

import config.logging_settings

Ini sebenarnya mengubah pengaturan pencatatan python saya, tetapi pylint berpikir itu adalah impor yang tidak digunakan. Saya tidak ingin menghapus unused-importperingatan secara umum, jadi mungkinkah mengabaikan satu baris khusus ini?

Saya tidak keberatan memiliki .pylintrcuntuk proyek ini sehingga jawaban mengubah file konfigurasi akan diterima.

Kalau tidak, hal seperti ini juga akan dihargai:

import config.logging_settings # pylint: disable-this-line-in-some-way

Jawaban:


227

Kontrol pesan Pylint didokumentasikan dalam manual Pylint :

Apakah mungkin untuk menonaktifkan pesan tertentu secara lokal?

Ya, fitur ini telah ditambahkan di Pylint 0.11. Ini dapat dilakukan dengan menambahkan
# pylint: disable=some-message,another-one
pada level blok yang diinginkan atau di akhir baris kode yang diinginkan

Anda dapat menggunakan kode pesan atau nama simbolik.

Sebagai contoh

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

Manual ini juga memiliki contoh lebih lanjut .

Ada wiki yang mendokumentasikan semua pesan pylint dan kodenya.


Saya suka flake8 s # noqa. Saya tidak ingin melihat begitu banyak komentar dalam kode. # nolintakan lebih jelas.
Nils Lindemann

61
import config.logging_settings # pylint: disable=W0611

Itu sederhana dan spesifik untuk garis itu.

Seperti yang ditunjukkan oleh sthenault, Anda dapat dan harus menggunakan formulir yang lebih mudah dibaca:

import config.logging_settings # pylint: disable=unused-import

Dari mana Anda mendapatkan simbol eksplisit pesan? Linter saya (yang di spyder) tidak melaporkannya dan wiki yang tertaut dalam jawaban jomo juga tidak mencantumkannya.
Joooeey

Maksudmu unused-import? Saya pikir linter saya memberi saya peringatan ketika saya menggunakan W0611, tetapi sudah> 3 tahun jadi saya tidak ingat: / Maaf
The Unfun Cat

4

Saya percaya apa yang Anda cari adalah ...

import config.logging_settings  # @UnusedImport

Catat ruang ganda sebelum komentar untuk menghindari memukul peringatan pemformatan lainnya.

Juga, tergantung pada IDE Anda (jika Anda menggunakannya), mungkin ada opsi untuk menambahkan aturan abaikan yang benar (misalnya dalam gerhana menekan Ctrl1saat kursor berada di atas peringatan akan otomatis menyarankan@UnusedImport


2
Ini mungkin bekerja untuk beberapa IDE, tetapi tidak berhasil emacs/flycheck. Terima kasih. Harap simpan jawabannya karena dapat membantu orang lain.
The Unfun Cat

Ini tidak berfungsi saat menjalankan pylintatau flake8dari baris perintah.
Jacob Tomlinson

@JacobTomlinson Menarik, terima kasih. Itulah yang diterima Pydev dan saya mendapat kesan bahwa pyclipse hanya dikupas untuk pylint. Harus sedikit disesuaikan atau mungkin gerhana sedang memproses arahan-arahan itu dan menekan hasilnya.
Dasar

4

Periksa file di https://github.com/PyCQA/pylint/tree/master/pylint/checkers . Saya belum menemukan cara yang lebih baik untuk mendapatkan nama kesalahan dari sebuah pesan daripada Ctrl + F-ing file-file itu atau menggunakan fitur pencarian Github:

Jika pesannya "Tidak ada nama ... dalam modul ...", gunakan pencarian:

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

Atau, untuk mendapatkan hasil yang lebih sedikit:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

Github akan menunjukkan kepada Anda:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

Anda kemudian dapat melakukan:

from collections import Sequence # pylint: disable=no-name-in-module

1
Anda dapat menemukan semuanya di dokumen
Esteban

Terima kasih, ini jauh lebih baik daripada melalui sumbernya. Saya menemukan dua mirror lagi untuk doc pylint. Rupanya, readthedoc adalah cermin resmi. Yang lainnya adalah pylint.org
loxaxs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.