Que signifie '# noqa' dans les commentaires Python?

163

En cherchant dans un projet Python, j'ai trouvé quelques lignes commentées # noqa.

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

Que noqasignifie en Python? Est-ce spécifique à Python uniquement?

Ishpreet
la source
3
noqasignifie probablement no quality assurance. Il indique au logiciel d'analyse de code d'ignorer les avertissements.
Stevoisiak
Dans ma tête, il se lit toujours comme "aucune question posée"
jeudi

Réponses:

199

L'ajout # noqaà une ligne indique que le linter (un programme qui vérifie automatiquement la qualité du code) ne doit pas vérifier cette ligne. Tous les avertissements générés par le code seront ignorés.

Cette ligne peut avoir quelque chose qui "semble mauvais" pour le linter, mais le développeur comprend et a l'intention qu'elle soit là pour une raison quelconque.

Pour plus d'informations, consultez la documentation Flake8 sur la sélection et l' ignorance des violations .

Jimf
la source
3
pour les linters python, c'est généralement cette déclaration mais pour les autres linters, cela peut être différent, c'est-à-dire que javascript w / jshint est: // jshint ignore:line( jshint.com/docs )
jimf
7
Cela fonctionne aussi dans PyCharm. Forme courte générique # noqa. Ou forme longue spécifique # noinspection PyUnresolvedReferencespar exemple.
Bob Stein
Et pourquoi pas # noqa F0001?
youkaichao
5
Notez que pour pycodestyle / pep8 # nopep8peut également être utilisé, ce qui est un peu plus clair, imo.
OozeMeister
54

noqa = NO-QA (PAS d'assurance qualité)

Il est généralement fait référence dans la programmation Python pour ignorer les avertissements PEP8 .

En termes simples, les lignes ayant #noqa à la fin seront ignorées par les programmes linter et ils ne déclencheront aucun avertissement.

Vishvajit Pathak
la source
15

Vous savez quoi? Même Guido van Rossum (le créateur de Python) a posé cette question avant : D

Un peu d' étymologie de# noqa :

C'était "nopep8" mais quand Flake8 et Pep8 voulaient un qualificatif commun, @florentx a suggéré "NoQA" comme dans "No Quality Assurance" (iirc) et il est resté.

Certains de base usages de# noqa (avec flake8 ):

  • # flake8: noqa: les fichiers contenant cette ligne sont ignorés
  • lignes qui contiennent un # noqacommentaire à la fin : n'émettra pas d'avertissements
  • # noqa: <error>, par exemple, # noqa: E234 à la fin : ignorer les erreurs spécifiques sur une ligne
    • plusieurs codes d'erreur peuvent être donnés, séparés par une virgule
    • le deux-points avant la liste des codes est obligatoire
YaOzI
la source