Jak wyłączyć ostrzeżenie Pylint?
Próbuję wyłączyć warning C0321 ("więcej niż jedna instrukcja w jednej linii" -- często umieszczam if
instrukcje z krótkimi wynikami w jednej linii na tej samej linii), w Pylint 0.21.1 (jeśli ma to znaczenie: astng 0.20.1, common 0.50.3, Python 2.6.6 (r266: 84292, Sep 15 2010, 16:22:56)).
Próbowałem dodać disable=C0321
do pliku konfiguracyjnego Pylint, ale Pylint i tak nalega, aby to zgłosić. Zmiany w tej linii (jak disable=0321
lub disable=C321
) są oznaczane jako błędy, więc Pylint robi prawidłowo rozpoznaj tę opcję, po prostu ją ignoruj.
9 answers
pylint --generate-rcfile
pokazuje to tak:
[MESSAGES CONTROL]
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
#disable=
Więc wygląda na to, że Twoje ~/.pylintrc
powinno mieć disable=
linię/y wewnątrz sekcji [MESSAGES CONTROL]
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-03 02:00:52
Miałem ten problem używając Eclipse i rozwiązałem go w następujący sposób:
W folderze pylint (np. C:\Python26\Lib\site-packages\pylint
) przytrzymaj shift, kliknij prawym przyciskiem myszy i wybierz polecenie windows w tym folderze. "Type": "content"]}
lint.py --generate-rcfile > standard.rc
Tworzy plik konfiguracyjny standard.rc
. Otwórz go w notatniku i pod [MESSAGES CONTROL]
, odkomentuj
disable=
i dodaj ID wiadomości, które chcesz wyłączyć, np.:
disable=W0511, C0321
Zapisz plik i w Eclipse->window - > preferences->PyDev - > pylint, w polu arguments, "type": "content"]}
--rcfile=C:\Python26\Lib\site-packages\pylint\standard.rc
Teraz powinno zadziałać ...
Możesz również dodać komentarz na górze kodu, który będzie interpretowany przez pylint:
# pylint: disable=C0321
Link do wszystkich kody wiadomości pylint
Dodanie np. --disable-ids=C0321
w polu arguments nie działa.
Wszystkie dostępne wiadomości pylint są przechowywane w słowniku _messages
, atrybucie instancji klasy pylint.utils.MessagesHandlerMixIn
. Podczas uruchamiania pylint z argumentem --disable-ids=...
(przynajmniej bez pliku konfiguracyjnego), ten słownik jest początkowo pusty, powodując wyjątek KeyError w pylint (pylint.utils.MessagesHandlerMixIn.check_message_id()
.
W Eclipse ten Komunikat o błędzie można zobaczyć w konsoli Pylint (windows - show view-Console, poza ikoną konsoli w opcjach konsoli wybierz konsolę pylint console.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-17 09:00:35
Począwszy od Pylint V. 0.25. 3, możesz używać symbolicznych nazw do wyłączania ostrzeżeń zamiast pamiętać wszystkie te numery kodu. Np.:
# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long
Ten styl jest bardziej pouczający niż tajemnicze kody błędów, a także bardziej praktyczny, ponieważ nowsze wersje Pylint wypisują tylko symboliczną nazwę, a nie kod błędu.
Zgodność między nazwami symbolicznymi i kodami można znaleźć tutaj .
Komentarz wyłączony może być wstawiony we własnej linii, zastosowanie wyłączenia do wszystkiego, co następuje w tym samym bloku. Alternatywnie można go umieścić na końcu linii, dla której ma być stosowany.
Jeśli pylint wyświetla komunikaty" Locally disabling
", możesz się ich pozbyć, włączając wyłącznik locally-disabled
pierwszy jak w powyższym przykładzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 13:39:33
Aby wyłączyć ostrzeżenie lokalnie w bloku, dodaj
# pylint: disable=C0321
Do tego bloku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 18:28:22
Istnieje kilka sposobów na wyłączenie ostrzeżeń i błędów z Pylint. Który z nich ma związek z tym, jak globalnie lub lokalnie chcesz zastosować wyłączenie-ważna decyzja projektowa.
Wiele Podejść
- W Jednym lub kilku plikach
pylintrc
.
Dotyczy to więcej niż Pliku ~/.pylintrc
(w katalogu $HOME) opisanego przez Chrisa Morgana. Pylint będzie wyszukiwać pliki rc, z pierwszeństwem, które wartościuje pliki "bliższe" więcej wysoko:
-
Plik {[1] } w bieżącym katalogu roboczym; lub
-
Jeśli bieżący katalog roboczy znajduje się w module Pythona( tzn. zawiera plik
__init__.py
), przeszukiwanie hierarchii modułów Pythona aż do znalezienia plikupylintrc
lub -
Plik nazwany przez zmienną środowiskową PYLINTRC; or
-
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 nazwę pylintrc
- tylko plik w ~
ma kropkę wiodącą.
Do pliku pylintrc
Dodaj linie, aby wyłączyć określone wiadomości pylint. Na przykład:
[MESSAGES CONTROL]
disable=locally-disabled
Dalsze wyłączanie z linii poleceń
pylint
, zgodnie z opisem Aboo i Cairnarvon. To wygląda jakpylint --disable=bad-builtin
. Powtórz--disable
, aby usunąć dodatkowe elementy.Kolejne wyłączenia z poszczególne linie kodu Pythona, opisane przez Imolit. Wyglądają one jak
some statement # pylint: disable=broad-except
(dodatkowy komentarz na końcu oryginalnej linii źródłowej) i odnoszą się tylko do bieżącej linii . Moje podejście polega na tym, aby zawsze umieszczać je na końcu innych linii kodu, aby nie były mylone ze stylem blokowym, patrz poniżej.-
Dodatkowo wyłącza 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ę na kluczpragma
word).Te odnoszą się do każdej linii po pragmie. Umieszczenie ich na górze pliku powoduje, że tłumienie odnosi się do całego pliku. Umieszczenie tego samego bloku niżej w pliku powoduje, że stosuje się je tylko do linii następujących po bloku. Moje podejście polega na tym, aby zawsze umieszczać je na własnej linii, aby nie były mylone ze stylem jednowierszowym, patrz powyżej.
Gdy tłumienie powinno mieć zastosowanie tylko w zakresie kodu, użyj
# pragma pylint: enable=bad-whitespace
(teraz używanieenable
Niedisable
), aby przestać tłumić.
Należy zauważyć, że wyłączenie dla pojedynczej linii używa składni # pylint
, podczas gdy wyłączenie dla tej linii dalej używa składni # pragma pylint
. Są one łatwe do zmylenia, zwłaszcza podczas kopiowania i wklejania.
Składając Wszystko Razem
Zazwyczaj używam kombinacji tych podejść.
Używam
~/.pylintrc
dla absolutnie globalnych standardów - bardzo niewielu z nich.Używam poziom projektu
pylintrc
na różnych poziomach modułów Pythona, gdy istnieją standardy specyficzne dla projektu. Zwłaszcza, gdy przyjmujesz Kod od innej osoby lub zespołu, może się okazać, że używają oni konwencji, których nie preferujesz, ale nie chcesz go przerabiać. Utrzymanie ustawień na tym poziomie pomaga nie rozprzestrzeniać tych praktyk na inne projekty.Używam pragmatów w stylu blokowym na górze pojedynczych plików źródłowych. Lubię wyłączać pragmy (przestań tłumić wiadomości) w ogniu rozwoju nawet dla standardów Pylint, z którymi się nie zgadzam (np. "zbyt mało publicznych metod" - zawsze dostaję to Ostrzeżenie Na niestandardowych klasach wyjątków) -- ale warto zobaczyć więcej / może wszystkie wiadomości Pylint podczas tworzenia. W ten sposób możesz znaleźć przypadki, które chcesz rozwiązać za pomocą pragmatów jednoliniowych (patrz poniżej), lub po prostu dodać komentarze dla następnego dewelopera, aby wyjaśnić, dlaczego ostrzeżenie jest w porządku w tym przypadku.
Zostawiam trochę stylu blokowego pragmas włączone nawet wtedy, gdy kod jest gotowy do zameldowania. Staram się użyć kilku z nich, ale gdy ma to sens dla modułu, można zrobić to jako dokumentację. Staram się jednak pozostawić jak najmniej, najlepiej żadnych.
Używam Stylu single-line-comment, aby rozwiązać szczególnie silne błędy. Na przykład, jeśli jest miejsce, w którym rzeczywiście ma sens robić
except Exception as exc
, umieszczam# pylint: disable=broad-except
na tej linii zamiast bardziej globalnego podejścia, ponieważ jest to dziwny wyjątek i musi być wywołana, zasadniczo jako forma dokumentacji.
Jak Wszystko inne w Pythonie, możesz działać na różnych poziomach indrection. Radzę zastanowić się, co należy na jakim poziomie, aby nie skończyć z zbyt pobłażliwym podejściem do Pylint.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-14 18:53:33
Możesz również użyć następującego polecenia:
pylint --disable=C0321 test.py
Moja wersja pylint to 0.25.1.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-18 04:28:55
To jest FAQ :
4.1 czy można lokalnie wyłączyć konkretną wiadomość?
Tak, ta funkcja została dodana w Pylint 0.11. Można to zrobić poprzez dodawanie
"#pylint: disable=some-message, another - one " przy żądanym poziom bloku lub na końcu żądanej linii kodu.
Możesz wyłączyć wiadomości za pomocą kodu lub nazwy symbolicznej. Zobacz docs (lub uruchom pylint --list-msgs
W Terminalu), aby uzyskać pełną listę pylint wiadomości.
Dokumenty zawierają również ładny przykład Jak korzystać z tej funkcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-09 14:35:40
Jeśli to komuś pomoże, jeśli używasz Visual Studio Code, oczekuje, że plik będzie w kodowaniu UTF8. Aby wygenerować plik, uruchomiłem pylint --generate-rcfile | out-file -encoding utf8 .pylintrc
W PowerShell.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 22:11:45
Składnia Pythona pozwala na więcej niż jedno polecenie w wierszu, oddzielone średnikiem (;). Jednak ograniczenie każdej linii do jednej instrukcji ułatwia człowiekowi podążanie za logiką programu podczas jej czytania.
Tak więc, innym sposobem rozwiązania tego problemu, jest zrozumienie, dlaczego wiadomość lint jest tam i nie umieścić więcej niż jedną wypowiedź na linii.
Tak, może być łatwiej napisać wiele instrukcji w wierszu, jednak pylint jest przeznaczony dla każdego innego czytelnika Twojego kodu nie tylko Ty.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-13 11:09:21