Un outil de linting est une ressource précieuse qui peut vous aider à détecter des erreurs et des incohérences dans votre code.


Flake8 est l’un des outils de linting les plus populaires pour Python. Il identifie les erreurs de syntaxe et de formatage dans votre code, ainsi que d’autres problèmes comme les importations inutilisées. Il est très flexible car, même s’il a des règles par défaut, vous pouvez les modifier ou en ajouter pour répondre à vos besoins.

Vous pouvez également configurer Flake8 pour qu’il s’exécute lorsque vous enregistrez des mises à jour de votre code à l’aide de VS Code. Toutes ces fonctionnalités en font un outil précieux pour l’écriture de programmes Python.


Installation de Flake8

Suivez les étapes ci-dessous pour installer Flake8 dans votre environnement de développement. Il se peut que vous deviez d’abord installer Pip sur votre machine.

  1. Exécutez la commande ci-dessous dans votre terminal pour installer Flake8 :
     pip install flake8
  2. Vérifiez que Flake8 est installé en exécutant la commande suivante :
     flake8 --version
  3. Si Flake8 est installé correctement, vous devriez obtenir une sortie similaire à la suivante :
     4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13 on
    Linux

Une fois que vous avez installé Flake8 avec succès, vous pouvez commencer à l’utiliser.

Utiliser Flake8 pour analyser le code Python

Pour comprendre comment utiliser Flake8, commencez par le code suivant. Il contient quelques erreurs intentionnelles. Copiez-le dans un fichier appelé greeting.py.

 def greeting(name):
    print("Hello, " + name)

greeting("Alice")
 greeting("Bob")

Exécuter Flake8 sur un seul fichier

La syntaxe pour exécuter Flake8 sur un seul fichier est la suivante.

 flake8 path/to/file.py

Dans cet exemple, naviguez jusqu’au répertoire contenant le fichier greting.py et exécutez la commande suivante.

Lire  5 applications gratuites de planification de voyage IA et ChatGPT pour obtenir un itinéraire instantané

 flake8 greeting.py

Flake8 devrait retourner le message suivant montrant qu’il y a eu une erreur d’indentation.

 greeting.py:5:1: E999 IndentationError: unexpected indent

Ce message indique que la ligne 5 est inutilement indentée. Pour corriger cette erreur d’indentation, vous devez supprimer l’espace au début de cette ligne.

 def greeting(name):
    print("Hello, " + name)

greeting("Alice")
greeting("Bob")

Maintenant, lorsque vous exécutez Flake8, vous obtiendrez les avertissements suivants.

 greeting.py:4:1: E305 expected 2 blank lines after class or function definition, found 1
greeting.py:5:16: W292 no newline at end of file

Cette sortie indique les problèmes suivants :

  • À la ligne 4, il devrait y avoir deux lignes vides après la définition de la fonction d’accueil, mais il n’y en a qu’une.
  • À la ligne 5, il devrait y avoir une nouvelle ligne à la fin du fichier.

Une fois ces problèmes résolus, flake8 ne devrait plus renvoyer de messages.

Jusqu’à présent, nous n’avons analysé qu’un seul fichier, mais dans la plupart des cas, vous voudrez analyser plusieurs fichiers.

Exécuter Flake8 sur plusieurs fichiers

Supposons que vous ayez un autre fichier appelé test_greeting.py qui contient le code suivant :

 from greeting import greeting
def test_greet():
    assert greeting("Alice") == "Hello, Alice!"

Pour analyser ces deux fichiers, exécutez la commande suivante.

 flake8 greeting.py test_greeting.py

Cette méthode fonctionne, mais si vous avez plus de deux fichiers, il peut être fastidieux et source d’erreurs de taper les noms des fichiers.

Il est plus efficace d’utiliser la commande suivante pour analyser tous les fichiers du répertoire actuel :

 flake8 .

Comprendre les erreurs et les avertissements de Flake8

Flake8 signale deux types de problèmes :

Lire  Comment contrôler vos appareils Google Home avec une montre Samsung Galaxy Watch

  • Erreurs : Une erreur indique un problème de syntaxe ou de structure qui empêche votre code de fonctionner, comme l’erreur d’indentation dans l’exemple greeting.py.
  • Avertissements : Un avertissement indique un problème potentiel ou une violation des directives de style PEP 8, comme l’avertissement « no newline at end of file » (pas de nouvelle ligne à la fin du fichier) dans l’exemple greeting.py.

Voici quelques-unes des erreurs et des avertissements les plus courants :

  • E101 : l’indentation contient un mélange d’espaces et de tabulations.
  • E302 : attendait 2 lignes vides, en a trouvé 0.
  • E999 IndentationError : indentation inattendue.
  • W291 : espace blanc à la fin.
  • E501 : ligne trop longue (maximum 79 caractères).
  • F401 : module importé mais inutilisé.

Lorsque vous exécutez Flake8, il affiche un message tel que celui présenté ci-dessus, ainsi que le numéro de ligne et l’emplacement du code auxquels le message fait référence. Cela vous aide à savoir exactement où votre code a des problèmes, ce qui vous permet de gagner du temps lors du débogage.

Configuration de Flake8

Pour certains projets, les règles de Flake8 peuvent être trop rigides. Dans ce cas, Flake8 vous permet de le configurer et d’adapter son comportement à vos besoins.

Vous pouvez fournir des options de configuration telles que :

  • Ignorer des erreurs ou des avertissements spécifiques.
  • Définition de la longueur maximale des lignes.
  • Spécification de règles supplémentaires.

Pour faire une démonstration, créez un fichier de configuration nommé setup.cfg. Vous pouvez également ajouter les options de configuration à un fichier nommé tox.ini, ou .flake8.

Dans ce fichier, commencez par créer une section flake8 comme suit :

 [flake8]

Ajoutez ensuite les options que vous souhaitez configurer :

 [flake8]
max-line-length = 100
ignore = F401

Dans cet exemple, max-line-length = 100 indique à Flake8 d’émettre des avertissements pour toute ligne de vos fichiers de code source dont la longueur dépasse 100 caractères. ignore = F401 indique à Flake8 d’ignorer les erreurs liées aux importations non utilisées.

Lire  Votre compte Facebook a été piraté ? 4 choses à faire immédiatement

Vous n’avez pas besoin d’ajouter ces options à un fichier de configuration car vous pouvez les spécifier sur la ligne de commande comme ceci :

 flake8 --ignore E203 --max-line-length 100

L’utilisation d’un fichier de configuration est la meilleure approche car vous n’avez pas besoin de spécifier les mêmes options à chaque fois que vous utilisez flake8.

Utilisation de Flake8 dans VS Code

Si vous utilisez VS Code pour écrire votre application Python, vous pouvez utiliser l’extension flake8 pour lester vos fichiers Python au fur et à mesure que vous les tapez.

Tout d’abord, vous devez installer l’extension flake8 depuis la place de marché de VS Code. Ensuite, pour la configurer, ouvrez les paramètres de VS Code, puis recherchez « python.linting.flake8Enabled » et activez le linting avec flake8.

Vous devriez maintenant voir les erreurs et les avertissements surlignés dans votre code avec une ligne sinueuse au fur et à mesure que vous l’écrivez. En survolant le texte surligné, un message expliquant le problème et suggérant des solutions possibles s’affichera.

D’autres IDEs Python tels que Pycharm ont également des extensions Flake8 que vous pouvez configurer pour simplifier le processus de linting.

Pourquoi utiliser un Linter ?

Lorsque vous écrivez du code, vous pouvez introduire des erreurs et des incohérences qui entraînent l’échec de votre application ou des problèmes de performance. Un linter comme Flake8 vous permet de détecter certains de ces problèmes à l’avance, vous aidant ainsi à écrire un code plus propre. Il est très important de l’intégrer dans votre flux de développement.

Vous pouvez le faire en l’utilisant dans votre éditeur de texte ou IDE et en l’intégrant dans votre pipeline d’intégration continue pour vérifier automatiquement votre code pour les erreurs et les avertissements avant de le fusionner dans votre branche principale.