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: disable
wszystkie ostrzeżenia dotyczące modułu?
86
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
C0302
jest teraztoo-many-lines
. Ale „C” mówi nam, żetoo-many-lines
jest 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:
Można tego użyć w wierszu poleceń:
Lub możesz umieścić go w swoim pliku pylintrc:
Uwaga: możesz już mieć taką
disable
opcję 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-newlines
komunikat 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.
źródło
Tak, możesz określić
# pylint: skip-file
w 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-name
wyłą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
źródło
disable=locally-disabled
można dodać do pylintrc.Inną opcją jest użycie
--ignore
opcji wiersza poleceń, aby pominąć analizę niektórych plików.źródło
Moim przypadkiem jest uruchomienie,
pylint *.py
aby przetworzyć wszystkie pliki w katalogu, z wyjątkiem tego, że chcę pominąć jeden konkretny plik.Dodanie
#pylint: skip-file
spowodowało błąd pylintaI: 8, 0: Ignoring entire file (file-ignored)
. Dodanie#pylint: disable=file-ignored
tego nie naprawia. Przypuszczalnie jest to błąd globalny, a nie specyficzny dla pliku.Rozwiązaniem było uwzględnienie
--disable=file-ignored
w opcjach polecenia pylint. Rozszyfrowanie tego zajęło zbyt dużo czasu; nie powinno byćfile-ignored
błędu, gdy jawnie zignorujesz plik.źródło
pylintrc
pliku konfiguracyjnym, a nie w opcji polecenia.