Co oznacza „# noqa” w komentarzach Pythona?

162

Podczas przeszukiwania projektu w Pythonie znalazłem kilka komentarzy z komentarzami # noqa .

import sys
sys.path.append(r'C:\dev')
import some_module   # noqa

Co to noqaznaczy w Pythonie? Czy dotyczy tylko Pythona?

Ishpreet
źródło
3
noqanajprawdopodobniej oznacza no quality assurance. Nakazuje oprogramowaniu do analizy kodu ignorowanie ostrzeżeń.
Stevoisiak
W mojej głowie to zawsze brzmi „bez zbędnych pytań”
thrau

Odpowiedzi:

198

Dodanie # noqado linii wskazuje, że linter (program, który automatycznie sprawdza jakość kodu) nie powinien sprawdzać tej linii. Wszelkie ostrzeżenia, które mógł wygenerować kod, zostaną zignorowane.

Ta linia może mieć coś, co „źle wygląda” dla lintera, ale programista rozumie i zamierza to tam być z jakiegoś powodu.

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Flake8 dotyczącą wybierania i ignorowania naruszeń .

jimf
źródło
3
w przypadku lintersów Pythona jest to zwykle takie stwierdzenie, ale w przypadku innych linterów może być inne, np. javascript w / jshint to: // jshint ignore:line( jshint.com/docs )
jimf.
7
Działa również w PyCharm. Krótka forma ogólna # noqa. Lub # noinspection PyUnresolvedReferencesna przykład długi formularz .
Bob Stein
A co powiesz # noqa F0001?
youkaichao
5
Zauważ, że dla pycodestyle / pep8 # nopep8można również użyć, co jest trochę wyraźniejsze, imo.
OozeMeister
53

noqa = NO-QA (BEZ zapewnienia jakości)

Generalnie w Python Programming jest mowa o ignorowaniu ostrzeżeń PEP8 .

Krótko mówiąc, linie mające na końcu #noqa zostaną zignorowane przez programy linterowe i nie będą powodować żadnych ostrzeżeń.

Vishvajit Pathak
źródło
15

Wiesz co? Już wcześniej Guido van Rossum (twórca Pythona) zadał to pytanie : D

Nieco Etymologia z# noqa :

Kiedyś było to „nopep8”, ale kiedy Flake8 i Pep8 chciały wspólnego kwalifikatora, @florentx zasugerował „NoQA” jak w „No Quality Assurance” (iirc) i tak się stało.

Niektóre podstawowe zwyczaje z# noqa (z flake8 ):

  • # flake8: noqa: pliki zawierające tę linię są pomijane
  • wiersze zawierające # noqakomentarz na końcu : nie będą generować ostrzeżeń
  • # noqa: <error>, np. # noqa: E234 na końcu : zignoruj określone błędy w linii
    • można podać wiele kodów błędów oddzielonych przecinkami
    • dwukropek przed listą kodów jest wymagany
YaOzI
źródło