Próbuję wyłączyć ostrzeżenie C0321 („więcej niż jedna instrukcja w jednym wierszu” - często umieszczam if
instrukcje z krótkimi wynikami w jednym wierszu w tym samym wierszu), w Pylint 0.21.1 (jeśli ma to znaczenie: astng 0.20. 1, wspólny 0.50.3, Python 2.6.6 (r266: 84292, 15 września 2010, 16:22:56)).
Próbowałem dodać disable=C0321
plik konfiguracyjny Pylint, ale Pylint nalega na zgłoszenie go. Wariacje na tej linii (jak disable=0321
lub disable=C321
) są oznaczone jako błędy, więc pylint nie rozpoznaje opcji prawidłowo, to po prostu ignorowanie go.
Czy to błąd Pylint, czy robię coś złego? Czy jest na to jakiś sposób? Naprawdę chciałbym pozbyć się tego hałasu.
Odpowiedzi:
pylint --generate-rcfile
pokazuje to tak:Wygląda więc na to, że
~/.pylintrc
powinieneś miećdisable=
linię / sekcje wewnątrz sekcji[MESSAGES CONTROL]
.źródło
~/.pylintrc
z dwoma liniami[MESSAGES CONTROL]
idisable=C0321
. To zapobiega tej wiadomości.Miałem ten problem przy użyciu Eclipse i rozwiązałem go w następujący sposób:
w folderze pylint (np.
C:\Python26\Lib\site-packages\pylint
) przytrzymaj klawisz Shift, kliknij prawym przyciskiem myszy i wybierz polecenie otwarcia systemu Windows w tym folderze. Rodzaj:Spowoduje to utworzenie
standard.rc
pliku konfiguracyjnego. Otwórz go w notatniku i poniżej[MESSAGES CONTROL]
, usuń komentarzdisable=
i dodaj identyfikatory wiadomości, które chcesz wyłączyć, np .:Zapisz plik i w Eclipse-> okno-> preferencje-> PyDev-> pylint, w polu argumentów wpisz:
Teraz powinno działać ...
Możesz także dodać komentarz na górze kodu, który zostanie zinterpretowany przez pylint:
link do wszystkich kodów wiadomości pylint
Dodanie np.
--disable-ids=C0321
W polu argumentów nie działa. Wszystkie dostępne wiadomości pylint są przechowywane w słowniku_messages
, atrybucie wystąpieniapylint.utils.MessagesHandlerMixIn
klasy. Podczas uruchamiania pylint z argumentem--disable-ids=...
(przynajmniej bez pliku konfiguracyjnego) ten słownik jest początkowo pusty, co powoduje powstanie wyjątku KeyError w pylint (pylint.utils.MessagesHandlerMixIn.check_message_id()
. W Eclipse możesz zobaczyć ten komunikat o błędzie w konsoli Pylint (Windows - pokaż widok - Konsola , wybierz konsolę Pylint z opcji konsoli oprócz ikony konsoli).źródło
Począwszy od wersji Pylint v. 0.25.3, możesz używać nazw symbolicznych do wyłączania ostrzeżeń, zamiast zapamiętywać wszystkie te kody . Na przykład:
Ten styl jest bardziej pouczający niż tajemnicze kody błędów, a także bardziej praktyczny, ponieważ nowsze wersje Pylint wyświetlają tylko symboliczną nazwę, a nie kod błędu.
Zależność między symbolicznymi nazwami a kodami można znaleźć tutaj .
Komentarz wyłączający można wstawić we własnym wierszu, stosując wyłączenie dla wszystkiego, co następuje po tym samym bloku. Alternatywnie można go wstawić na końcu linii, o którą ma się ubiegać.
Jeśli pylint generuje
Locally disabling
komunikaty „ ”, możesz się ich pozbyć, włączająclocally-disabled
najpierw funkcję wyłączania, jak w powyższym przykładzie.źródło
# pylint: disable=foo
inlyne sprawia, że jestem za długa, więc muszę dodać, line-too-long
! Język w policzek; tego właśnie potrzebowałem i rozwiązałem mój problem. Dzięki!Aby wyłączyć ostrzeżenie lokalnie w bloku, dodaj
do tego bloku.
źródło
[pylint] C0111: Missing method docstring
, więc znalezienie numeru kodu jest łatwe, ale znalezienie symbolicznej nazwy oznacza, że muszę to sprawdzić.Istnieje kilka sposobów wyłączania ostrzeżeń i błędów w Pylint. Który z nich ma związek z tym, jak globalnie lub lokalnie chcesz zastosować blokadę - ważna decyzja projektowa.
Wiele podejść
pylintrc
plikach.Dotyczy to więcej niż
~/.pylintrc
pliku (w katalogu $ HOME) zgodnie z opisem Chrisa Morgana. Pylint wyszuka pliki rc z pierwszeństwem, które bardziej ceni „bliższe” pliki:pylintrc
Plik w bieżącym katalogu roboczym; lubJeśli bieżący katalog roboczy znajduje się w module Pythona (tzn. Zawiera
__init__.py
plik), przeszukuj hierarchię modułów Pythona aż dopylintrc
znalezienia pliku; lubPlik nazwany przez zmienną środowiskową PYLINTRC; lub
Jeśli masz katalog domowy, który nie jest
/root
:~/.pylintrc
; lub~/.config/pylintrc
; lub/etc/pylintrc
Zauważ, że większość z tych plików ma nazwy
pylintrc
- tylko plik wewnątrz~
ma kropkę wiodącą.Do
pylintrc
pliku dodaj wiersze, aby wyłączyć określone wiadomości pylint. Na przykład:Dalsze wyłącza z
pylint
linii poleceń, jak opisano przez Aboo i Cairnarvon. To wygląda jakpylint --disable=bad-builtin
. Powtórz,--disable
aby ukryć dodatkowe elementy.Ponadto wyłącza poszczególne wiersze kodu Pythona, jak opisano w Imolit. Wyglądają jak
some statement # pylint: disable=broad-except
(dodatkowy komentarz na końcu oryginalnej linii źródłowej) i dotyczą tylko bieżącej linii . Moje podejście polega na tym, aby zawsze umieszczać je na końcu innych wierszy kodu, aby nie były mylone ze stylem bloku, patrz poniżej.Dalsze wyłączenia zdefiniowane dla większych bloków kodu Pythona, aż do kompletnych plików źródłowych.
Wyglądają jak
# pragma pylint: disable=bad-whitespace
(zwróć uwagę napragma
słowo kluczowe).Odnoszą się one do każdej linii po pragmie. Umieszczenie ich w górnej części pliku powoduje, że wyłączenia dotyczą całego pliku. Umieszczenie tego samego bloku niżej w pliku powoduje, że mają one zastosowanie tylko do linii następujących po tym bloku. Moje podejście polega na tym, aby zawsze umieszczać je osobno, aby nie były mylone ze stylem jednoliniowym, patrz wyżej.
Jeśli eliminacja powinna obowiązywać tylko w obrębie zakresu kodu, użyj
# pragma pylint: enable=bad-whitespace
(terazenable
nie używajdisable
), aby zatrzymać tłumienie.Zauważ, że wyłączenie jednej linii używa
# pylint
składni, a wyłączenie tej linii używa tej# pragma pylint
składni. Można je łatwo pomylić, szczególnie podczas kopiowania i wklejania.Kładąc wszystko razem
Zwykle używam kombinacji tych podejść.
Używam
~/.pylintrc
do absolutnie globalnych standardów - bardzo niewielu z nich.Używam poziomu projektu
pylintrc
na różnych poziomach w modułach Python, gdy istnieją standardy specyficzne dla projektu. Zwłaszcza, gdy pobierasz kod od innej osoby lub zespołu, może się okazać, że używają konwencji, których nie wolisz, ale nie chcesz przerabiać kodu. Utrzymanie ustawień na tym poziomie pomaga nie rozpowszechniać tych praktyk w innych projektach.Używam pragmów w stylu bloków u góry pojedynczych plików źródłowych. Lubię wyłączać pragnienia (przestać tłumić wiadomości) w ogniu rozwoju, nawet w przypadku standardów Pylint, z którymi się nie zgadzam (np. „Zbyt mało metod publicznych” - zawsze otrzymuję to ostrzeżenie o niestandardowych klasach wyjątków) - ale pomocne jest wyświetlanie więcej / może wszystkich wiadomości Pylint podczas tworzenia. W ten sposób możesz znaleźć przypadki, które chcesz rozwiązać za pomocą pragmatów jednowierszowych (patrz poniżej), lub po prostu dodać komentarze dla następnego programisty, aby wyjaśnić, dlaczego to ostrzeżenie jest w tym przypadku OK.
Niektóre z pragmatycznych bloków zostawiam włączone nawet wtedy, gdy kod jest gotowy do wpisania się. Próbuję użyć kilku z nich, ale gdy ma to sens dla modułu, można zrobić dokumentację. Staram się jednak pozostawiać jak najmniej, najlepiej żaden.
Używam stylu komentarza jednowierszowego do rozwiązywania szczególnie silnych błędów. Na przykład, jeśli istnieje miejsce, w którym ma to sens
except Exception as exc
, umieszczam# pylint: disable=broad-except
tę linię zamiast bardziej globalnego podejścia, ponieważ jest to dziwny wyjątek i należy go wywołać, zasadniczo jako formę dokumentacji.Podobnie jak wszystko inne w Pythonie, możesz działać na różnych poziomach pośrednich. Radzę pomyśleć o tym, co należy na jakim poziomie, aby nie skończyć zbyt łagodnym podejściem do Pylinta.
źródło
~/.pylintrc
. IMHO, konfiguracja powinna zazwyczaj być powiązana z projektem, a więc musi znajdować się gdzieś w projekcie. Tylko wtedy można kontrolować wersję i udostępniać projekt. W przeciwnym razie klon może nie mieć dostosowań niezbędnych do wyjścia pylinta bez drukowania wiadomości.pragma
wydaje się zupełnie niepotrzebny. Na przykład mam# pylint: disable=missing-docstring
na górze mojego pliku i dotyczy on całej reszty pliku. Sprawdź i usuńpragma
prefiks z odpowiedzi.Możesz także użyć następującego polecenia:
Moja wersja pylint to 0.25.1.
źródło
--py3k
flagą :(rc
pliku, i (bardziej kłopotliwe) faktycznie generuje poprawnyrc
plik--generate-rcfile
. Uwielbiam kod z wieloma gałęziami, które robią to samo :(To jest FAQ :
Możesz wyłączyć wiadomości poprzez:
E1101
,E1102
etc.no-member
,undefined-variable
etc.pylint --list-groups
.C
,R
,W
, itd.all
.Zobacz dokumentację (lub uruchom
pylint --list-msgs
w terminalu), aby uzyskać pełną listępylint
wiadomości. Dokumenty stanowią również dobry przykład korzystania z tej funkcji.źródło
Musisz tylko dodać jedną linię, aby wyłączyć to, co chcesz wyłączyć. Na przykład
Dodaj to na nr 1 w swoim module
źródło
Jeśli to pomaga komuś, jeśli używasz Visual Studio Code, oczekuje on, że plik będzie kodowany w UTF8. Aby wygenerować plik, uruchomiłem
pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
w PowerShell.źródło
Zgodnie z dokumentacją pylint najłatwiej jest użyć tej tabeli :
Można więc użyć:
źródło
Składnia w języku Python zezwala na więcej niż jedną instrukcję w wierszu, oddzieloną średnikiem (;). Jednak ograniczenie każdej linii do jednej instrukcji ułatwia człowiekowi przestrzeganie logiki programu podczas czytania.
Innym sposobem rozwiązania tego problemu jest zrozumienie, dlaczego jest tam komunikat o kłaczkach, i nie umieszczanie więcej niż jednej instrukcji w wierszu.
Tak, może być łatwiej pisać wiele instrukcji w wierszu, jednak pylint jest przeznaczony dla każdego innego czytelnika twojego kodu, nie tylko ciebie.
źródło
Możesz spróbować tego:
Edytuj „C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json” i dodaj
python.linting.pylintArgs
linie na końcu, jak pokazano poniżej:źródło