web-dev-qa-db-fra.com

Flake8: Ignorer un avertissement spécifique pour le fichier entier

Les erreurs d'ignorance docs répertorient actuellement un moyen d'ignorer une erreur particulière pour une ligne particulière:

example = lambda: 'example'  # noqa: E731

... et une façon d'ignorer toutes les erreurs d'un fichier entier:

# flake8: noqa

from foo import unused
function_that_doesnt_exist()
x = 1+       2

... et plusieurs manières, via la configuration ou les options de ligne de commande, de désactiver une erreur particulière globalement dans l'ensemble du projet.

Mais que se passe-t-il si je veux ignorer une erreur particulière sur l’ensemble d’un simple fichier - par exemple, pour désactiver les avertissements concernant les importations non utilisées dans un __init__.py fichier baril qui importe juste un tas de classes afin que le code d’autres paquetages puisse les importer à son tour? Les documents ne semblent indiquer aucune syntaxe pour cela. C'est possible?

30
Mark Amery

Depuis Flake8 3.7.0, vous pouvez le faire en utilisant le --per-file-ignores option.

Exemple de ligne de commande

flake8 --per-file-ignores='project/__init__.py:F401 setup.py:E121'

Ou dans votre fichier de configuration

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9

Voir la documentation ici: http://flake8.pycqa.org/en/latest/user/options.html?highlight=per-file-ignores#cmdoption-flake8-per-file-ignores

Il n'est pas possible de placer un commentaire noqa pour des codes spécifiques en haut d'un fichier, comme vous le pouvez pour des lignes individuelles. # flake8: noqa: F401 peut sembler au début fonctionner, mais il est en fait détecté comme étant seulement # flake8: noqa, qui signifie "ignorer tous les messages du fichier" ".

21
Ross MacArthur

Avant la version 3.7.0, ignorer des erreurs spécifiques était uniquement implémenté par ligne mais pas par fichier.

La fonctionnalité est en cours de suivi et discutée dans numéro 89 à partir de laquelle seule la proposition par ligne a été adoptée. Plus récemment, une implémentation a été proposée dans cette demande de fusion , à laquelle personne n'a donné suite.

Cependant, certaines extensions sont apparues pour résoudre le problème:

  • flake8-per-file-ignores vous permet d'ignorer des avertissements/erreurs spécifiques à des fichiers spécifiques via une entrée dans la configuration.

  • flake8-PuTTY prétend faire la même chose, mais n’a pas été mis à jour depuis un moment.

15
Arminius