Pylint wyłącz wszystkie ostrzeżenia dla pliku

86

Używamy pylint w naszym systemie budowania. Mamy pakiet Pythona w naszej bazie kodu, który zawiera kod jednorazowy i chciałbym tymczasowo wyłączyć wszystkie ostrzeżenia dla modułu, abym mógł przestać wkurzać innych programistów tymi zbędnymi komunikatami. Czy istnieje łatwy sposób na pylint: disablewszystkie ostrzeżenia dotyczące modułu?

mvanveen
źródło

Odpowiedzi:

120

Z FAQ PyLint

Przy Pylint <0,25 dodać

# pylint: disable-all

na początku modułu.

Pylint 0.26.1 i nowsze wersje zmieniły nazwę tej dyrektywy na

# pylint: skip-file

(ale pierwsza wersja zostanie zachowana w celu zachowania kompatybilności wstecznej).

Aby ułatwić znalezienie, które moduły są ignorowane, emitowany jest komunikat poziomu informacyjnego I0013. W ostatnich wersjach Pylint, jeśli używasz starej składni, emitowany jest dodatkowy komunikat I0014.

enderskill
źródło
2
Uwaga: spowoduje to wyłączenie wszystkich ostrzeżeń i wszystkich błędów . Jeśli szukasz sposobu na wyłączenie tylko ostrzeżeń, zobacz moją odpowiedź na tej stronie.
eatcrayons
31

PyLint ma pięć „kategorii” dla wiadomości (o których wiem).

W przeszłości te kategorie były bardzo oczywiste, ale numerowane wiadomości Pylint zostały zastąpione nazwami. Na przykład C0302jest teraz too-many-lines. Ale „C” mówi nam, że too-many-linesjest to przesłanie Konwencji . Jest to mylące, ponieważ komunikaty Konwencji często pojawiają się jako ostrzeżenia, ponieważ wiele systemów (takich jak Syntastic ) wydaje się klasyfikować wszystko jako ostrzeżenie lub błąd. Jednak raport PyLint nadal dzieli rzeczy na te kategorie, więc nadal jest zdecydowanie obsługiwany.

Twoje pytanie odnosi się konkretnie do Ostrzeżeń , a wszystkie nazwy komunikatów ostrzegawczych PyLint zaczynają się od „W”.

Trochę trudno było mi to wytropić, ale ta odpowiedź ostatecznie doprowadziła mnie do odpowiedzi. PyLint nadal obsługuje wyłączanie całych kategorii wiadomości. Tak więc, aby wyłączyć wszystkie ostrzeżenia , wykonaj następujące czynności:

disable=W

Można tego użyć w wierszu poleceń:

$ pylint --disable=W myfile.py

Lub możesz umieścić go w swoim pliku pylintrc:

[MESSAGES CONTROL]
disable=W

Uwaga: możesz już mieć taką disableopcję w swoim pliku rc, w takim przypadku powinieneś dołączyć „W” do tej listy.

Lub możesz umieścić go w kodzie, gdzie będzie działał dla zakresu, w którym jest umieszczony:

# pylint: disable=W

Aby wyłączyć go dla całego pliku, najlepiej umieścić go na samej górze pliku. Jednak nawet na samym początku pliku stwierdziłem, że nadal otrzymuję trailing-newlineskomunikat ostrzegawczy (technicznie rzecz biorąc, ostrzeżenie dotyczące konwencji , ale do tego dojdę).

W moim przypadku miałem bibliotekę, którą napisał ktoś dawno temu. Działało dobrze, więc naprawdę nie trzeba było martwić się o konwencje współczesnego Pythona itp. Jedyne, na czym mi naprawdę zależało, to błędy, które prawdopodobnie zepsują mój kod.

Moim rozwiązaniem było wyłączenie wszystkich komunikatów ostrzegawczych , konwencji i refaktoryzacji tylko dla tego jednego pliku, umieszczając następujące polecenie PyLint w pierwszym wierszu:

# pylint: disable=W,C,R

Oprócz wyżej wymienionej wiadomości o końcowych znakach nowej linii, zrobiło to dokładnie to, czego potrzebowałem.

Jedz kredki
źródło
15

Tak, możesz określić # pylint: skip-filew pliku, ale wyłączanie wszystkich ostrzeżeń dotyczących pliku jest złą praktyką.

Jeśli chcesz wyłączyć tylko określone ostrzeżenia, możesz to zrobić, dodając komentarz, taki jak # pylint: disable=message-namewyłączenie określonej wiadomości dla pozostałej części pliku lub przynajmniej do # pylint: enable=message-name.

Przykład:

# 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
źródło
Aby uniknąć powiadomienia, że ​​określone ostrzeżenie zostało wyłączone, takie jak to, disable=locally-disabledmożna dodać do pylintrc.
Pułkownik Fazackerley,
6

Inną opcją jest użycie --ignoreopcji wiersza poleceń, aby pominąć analizę niektórych plików.

sthenault
źródło
0

Moim przypadkiem jest uruchomienie, pylint *.pyaby przetworzyć wszystkie pliki w katalogu, z wyjątkiem tego, że chcę pominąć jeden konkretny plik.

Dodanie #pylint: skip-filespowodowało błąd pylinta I: 8, 0: Ignoring entire file (file-ignored). Dodanie #pylint: disable=file-ignoredtego nie naprawia. Przypuszczalnie jest to błąd globalny, a nie specyficzny dla pliku.

Rozwiązaniem było uwzględnienie --disable=file-ignoredw opcjach polecenia pylint. Rozszyfrowanie tego zajęło zbyt dużo czasu; nie powinno być file-ignoredbłędu, gdy jawnie zignorujesz plik.

Lakoniczny
źródło
1
Bardziej idealnie, umieść go w pylintrcpliku konfiguracyjnym, a nie w opcji polecenia.
Acumenus