Les Crash-Devs d'un Passionné

Mettre en place flake8 sur PyCharm

/Catégorie/python

Temps de lecture : 3 minutes

Dans mon projet j'ai des outils installés en dépendances de dev avec

poetry
. Pour orchestrer cela j'utilise
pre-commit
afin de lancer mon linter et mon formateur, et cela fonctionne très bien.

Ces outils sont lancés lors du

push
mais j'aimerais que mon linter m'affiche directement dans l'IDE les erreurs qu'ils détectent à la volée et ne pas attendre le
push
pour les voir et donc les fixer.

Donc l'idée est de lancer la partie linter de mon pre-commit soit

pre-commit run flake8
à chaque modification de mes fichiers python

Pour cela nous allons configurer un File Watchers, pour cela allez dans Settings

pycharm file watcher flake8
  • Dans le champ Scope il faut mettre Current File qui permettra d'exécuter uniquement le lint sur le fichier en cours
  • Dans le champ Program, il faut mettre le chemin de la librairie
    pre-commit
    qui est installé dans votre env. Moi j'utilise
    poetry
    et pour connaitre le chemin je lance la commande
    poetry env info
  • Dans le champ Arguments je précise les options de ma commande
    pre-commit,
    comme je souhaite lancer mon linter je rajoute
    run flake8 --files $FilePath$.
    Il faut au préalable bien sûr avoir installé
    flake8
    comme dépendance de dev de votre projet
  • Dans le champ Working Directory je mets le dossier racine de mon projet qui sera à analyser par le watcher
  • Dans le champ Create output file from stdout doit être activé car il permet d'aller lire la sortie de la commande pour la réinjecter dans l'IDE (onglet Problems...)
  • Dans le champ Output filters il faut préciser le format de message de
    flake8
    qui mettra à PyCharm d'aller extraire les bonnes informations et les ré-injecter dans l'IDE

Et c'est tout !

Maintenant quand le linter

flake8
détecte une anomalie il vous en avertit dans l'IDE

  • Vous avez le soulignement jaune pour l'
    import
    non utilisé, avec son code F401
  • Vous avez dans l'onglet Problems le message de
    flake8

flake8 activated on pycharm IDE