Pylint bir dosya için tüm uyarıları devre dışı bırakır


90

Yapı sistemimizde pylint kullanıyoruz. Kod tabanımızda, atılan kod içeren bir python paketimiz var ve bir modül için tüm uyarıları geçici olarak devre dışı bırakmak istiyorum, böylece diğer geliştiricileri bu gereksiz mesajlarla rahatsız etmeyi bırakabilirim. pylint: disableBir modül için tüm uyarıların kolay bir yolu var mı ?

Yanıtlar:


127

Gönderen PyLint SSS

Pylint <0.25 ile ekleyin

# pylint: disable-all

modülün başında.

Pylint 0.26.1 ve üzeri bu yönergeyi şu şekilde yeniden adlandırdı:

# pylint: skip-file

(ancak ilk sürüm geriye dönük uyumluluk için saklanacaktır).

Hangi modüllerin göz ardı edildiğini bulmayı kolaylaştırmak için Bilgi düzeyinde bir mesaj I0013 yayınlanır. Pylint'in son sürümlerinde, eski sözdizimini kullanırsanız, ek bir I0014 mesajı yayınlanır.


2
Not: Bu, tüm uyarıları ve tüm hataları devre dışı bırakır . Yalnızca uyarıları devre dışı bırakmanın bir yolunu arıyorsanız , bu sayfadaki cevabıma bakın.
eatcrayons

32

PyLint'in mesajlar için (farkında olduğum) beş "kategorisi" vardır .

Bu kategoriler geçmişte çok açıktı, ancak numaralandırılmış Pylint mesajlarının yerini artık isimler almıştır. Örneğin C0302, şimdi too-many-lines. Ama 'C' bize bunun too-many-linesbir Sözleşme mesajı olduğunu söylüyor . Bu kafa karıştırıcıdır, çünkü birçok sistem ( Syntastic gibi ) her şeyi bir uyarı veya bir hata olarak sınıflandırdığı için , Sözleşme mesajları genellikle sadece bir uyarı olarak görünür . Bununla birlikte, PyLint raporu hala işleri bu kategorilere ayırıyor, bu yüzden hala kesinlikle destekleniyor.

Sorunuz özellikle Uyarılarla ilgilidir ve tüm PyLint Uyarı mesajı adları 'W' ile başlar.

Bunu takip etmek benim için biraz zordu ama bu cevap sonunda beni cevaba götürdü. PyLint hala tüm mesaj kategorilerinin devre dışı bırakılmasını desteklemektedir. Dolayısıyla, tüm Uyarıları devre dışı bırakmak için şunları yaparsınız:

disable=W

Bu, komut satırında kullanılabilir:

$ pylint --disable=W myfile.py

Ya da pylintrc dosyanıza koyabilirsiniz:

[MESSAGES CONTROL]
disable=W

Not: disablerc dosyanızda bu seçeneğe zaten sahip olabilirsiniz , bu durumda bu listeye 'W' harfini eklemelisiniz.

Veya, kodunuzun içine yerleştirildiği kapsam için çalışacağı satır içi olarak koyabilirsiniz:

# pylint: disable=W

Tüm dosya için devre dışı bırakmak için, en iyisi onu dosyanın en üstüne koymaktır. Ancak, dosyanın en üstünde bile, hala trailing-newlinesuyarı mesajını aldığımı fark ettim (teknik olarak bir kongre uyarısı, ancak buna ulaşıyorum).

Benim durumumda, uzun zaman önce birisinin yazdığı bir kütüphanem vardı. İyi çalıştı, bu yüzden modern Python kuralı vb. Hakkında endişelenmeye gerek yoktu. Asıl umursadığım tek şey, muhtemelen kodumu bozacak hatalardı.

Çözümüm , bu tek dosya için tüm Uyarı , Sözleşme ve Yeniden Düzenleme mesajlarını yalnızca aşağıdaki PyLint komutunu ilk satıra yerleştirerek devre dışı bırakmaktı :

# pylint: disable=W,C,R

Son satırlar için yukarıda belirtilen mesajın yanı sıra, bu tam olarak ihtiyacım olan şeyi yaptı.


17

Evet, # pylint: skip-filedosyada belirtebilirsiniz , ancak bir dosya için tüm uyarıları devre dışı bırakmak kötü bir uygulamadır.

Yalnızca belirli uyarıları devre dışı bırakmak istiyorsanız, bu # pylint: disable=message-name, dosyanın geri kalanı için belirtilen mesajı devre dışı bırakmak gibi bir yorum ekleyerek veya en azından tarihine kadar yapılabilir # pylint: enable=message-name.

Misal:

# 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

Bunun gibi belirli bir uyarının devre dışı bırakıldığının söylenmesini önlemek disable=locally-disablediçin pilintrc'ye eklenebilir.
ColonelFazackerley

7

Diğer bir seçenek, --ignorebazı dosyalar için analizi atlamak için komut satırı seçeneğini kullanmaktır .


0

Benim kullanım durumum pylint *.py, belirli bir dosyayı atlamak istemem dışında bir dizindeki tüm dosyaları işlemek için çalıştırmaktır .

Eklemek #pylint: skip-filepilin başarısız olmasına neden oldu I: 8, 0: Ignoring entire file (file-ignored). Eklemek #pylint: disable=file-ignoredbunu düzeltmez. Muhtemelen, bu bir dosyaya özgü olmaktan çok genel bir hatadır.

Çözüm, --disable=file-ignoredpylint komut seçeneklerini dahil etmekti. Bunu anlamak çok uzun sürdü; file-ignoredbir dosyayı açıkça yok saydığınızda hata olmamalıdır .


1
Daha ideal olarak, bunu pylintrcbir komut seçeneğine değil, bir yapılandırma dosyasına koyun .
Acumenus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.