Cosa significa "# noqa" nei commenti su Python?


163

Durante la ricerca in un progetto Python, ho trovato alcune righe commentate # noqa.

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

Cosa noqasignifica in Python? È specifico solo per Python?


3
noqamolto probabilmente rappresenta no quality assurance. Indica al software di analisi del codice di ignorare gli avvisi.
Stevoisiak,


Nella mia testa si legge sempre come "senza fare domande"
giovedì

Risposte:


199

L'aggiunta # noqaa una riga indica che la linter (un programma che controlla automaticamente la qualità del codice) non dovrebbe controllare questa riga. Qualsiasi avviso generato dal codice verrà ignorato.

Quella linea potrebbe avere qualcosa che "sembra brutto" alla linter, ma lo sviluppatore capisce e intende che sia lì per qualche motivo.

Per ulteriori informazioni, consultare la documentazione di Flake8 per la selezione e l' ignoramento delle violazioni .


3
per le linter di Python, di solito è questa affermazione ma per le altre linter può essere diversa, cioè javascript w / jshint è: // jshint ignore:line( jshint.com/docs )
jimf

7
Funziona anche in PyCharm. Forma breve generica # noqa. O forma specifica specifica # noinspection PyUnresolvedReferencesper esempio.
Bob Stein,

Che ne dici # noqa F0001?
Youkaichao,

5
Si noti che per pycodestyle / pep8 # nopep8può essere utilizzato anche un po 'più chiaro, imo.
OozeMeister

54

noqa = NO-QA (NO Quality Assurance)

Viene generalmente indicato nella programmazione Python per ignorare gli avvisi PEP8 .

In parole semplici, le linee che hanno #noqa alla fine verranno ignorate dai programmi di linter e non genereranno alcun avviso.


15

Sai cosa? Anche Guido van Rossum (il creatore di Python) ha posto prima questa domanda : D

Un po ' etimologia di# noqa :

Era "nopep8" ma quando Flake8 e Pep8 volevano un qualificatore comune @florentx ha suggerito "NoQA" come in "No Quality Assurance" (iirc) e si è bloccato.

Alcuni usi di base di# noqa (con flake8 ):

  • # flake8: noqa: i file che contengono questa riga vengono saltati
  • righe che contengono un # noqacommento alla fine : non emetterà avvisi
  • # noqa: <error>, ad esempio, # noqa: E234 alla fine : ignora errori specifici su una riga
    • possono essere forniti più codici di errore, separati da virgola
    • i due punti prima dell'elenco di codici è obbligatorio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.