Aller au contenu

Préférences et cookies

Afin d’améliorer votre expérience sur notre site et de réaliser des statistiques de visites, nous utilisons des cookies. Rien n’est déposé sans votre accord, et le refus n’enlève l’accès à aucun contenu. Ce choix peut être modifié à tout moment.

Gérer les traceursVos données

Personnaliser

ArticleApplications & Développement

5 outils pour nettoyer son code Python

Ces cinq outils gratuits permettent de vérifier que son code Python répond aux conventions de codage recommandées et aux normes de qualité du code.

La rédaction

En théorie, tout code Python est acceptable à partir du moment où il est syntaxiquement correct et qu'il s’exécute comme prévu. Mais en pratique, tout développeur a envie d’adopter un style cohérent pour l’ensemble de ses projets, en suivant de préférence les recommandations de style propres au langage Python. La bonne nouvelle, c’est que cette vérification n’a pas besoin de se faire à la main. L'écosystème Python offre une variété d'outils, du plus pointu au plus généraliste, pour s'assurer que le code source Python respecte les conventions de style du langage. Voilà quatre outils populaires pour vérifier les styles de code Python, plus un outil de reformatage pour la cohérence du code. Les IDE Python comme PyCharm ou Visual Studio Code supportent ces outils soit nativement, soit avec une extension, de sorte qu’ils peuvent être facilement intégrés à un flux de développement.

Pycodestyle calé sur PEP 8

Toutes les conventions de codage de Python sont contenues dans le document PEP 8, depuis l'utilisation de tabulations ou d'espaces lors de l'indentation (utiliser quatre espaces, problème résolu) jusqu'à la manière de nommer les variables et les objets. Le module Pycodestyle vérifie le code Python par rapport aux recommandations PEP 8 et répertorie dans un rapport les cas où le code analysé ne respecte pas les spécifications. Pycodestyle ne corrige pas automatiquement les problèmes et laisse cette responsabilité au développeur. Par contre le module Pycodestyle est hautement configurable, et permet de supprimer certains types d'erreurs ou de n'analyser que certains fichiers dans une arborescence de sources. Enfin, presque tous les IDE supportant Python supportent également Pycodestyle, ce qui garantit au développeur une compatibilité, voire une fonctionnalité universelle, sans trop de difficulté. De nombreux linters de code Python peuvent fonctionner comme des modules dans Python, et Pycodestyle ne fait pas exception. Il peut servir à vérifier le code du point de vue de la programmation, par exemple dans le cadre d'une séquence de tests.

Pycodestyle est le meilleur outil pour effectuer une vérification de base de la conformité PEP 8.

Autopep8 peut reformater les formulations

Autopep8 prend en quelque sorte le relais de Pycodestyle. Il se sert de Pycodestyle pour déterminer les changements à apporter, puis reformate le code pour se conformer aux suggestions fournies par Pycodestyle. Les fichiers existants peuvent être reformatés sur place ou écrits dans de nouveaux fichiers. Autopep8 corrige également un tas d'autres problèmes annexes, comme le nettoyage du code converti de Python 2 à Python 3 ou des fichiers ayant des marqueurs de fin de ligne mixtes. Enfin, Autoprep8 peut être utilisé en programmation pour reformater le code fourni sous forme de chaînes de caractères.

Autopep8 est le meilleur outil pour convertir des fichiers et les rendre conformes au document PEP 8.

Flake8 pour vérifier le nombre cyclomatique

Flake8 regroupe plusieurs outils de style et de linting pour Python dans un seul et même paquet. Á côté de PyFlakes, qui utilise la vérification syntaxique pour détecter les erreurs de base, et Pycodestyle, mentionné ci-dessus, Flake8 est un outil supplémentaire pour vérifier le « Nombre cyclomatique » d'un projet - c'est-à-dire le nombre de chemins de code indépendants trouvés dans un programme. (Le nombre cyclomatique, appelé aussi complexité cyclomatique ou Mesure de McCabe est un outil de métrologie logicielle développé par Thomas McCabe en 1976 pour mesurer la complexité d'un programme informatique. C’est une mesure potentiellement utile si l’on veut éviter qu'un module de base ne devienne trop complexe, par exemple). À la fin de chaque analyse, Flake8 fournit une mesure en centile de la qualité globale du code analysé, très pratique pour avec une idée rapide des portions les plus problématiques d'une base de code. Flake8 dispose également d'un système de plugin, de sorte que le linting peut être couplé avec des commits Git ou d'autres actions automatisées - par exemple, pour alimenter un reformateur en code problématique.

Flake8 est le meilleur outil pour évaluer la qualité globale du code, avec des recommandations spécifiques.

Pylint, le vérificateur le plus complet

Pylint est probablement le linter Python le plus largement utilisé et supporté. Comme les autres, il recherche les erreurs et les écarts par rapport aux normes de codage dans le code Python, et propose des modifications pour corriger ces erreurs. Pylint est aussi sans doute le plus complet des vérificateurs de code. En ce sens qu'il peut alerter le développeur sur un grand nombre de problèmes liés à votre code, dont certains peuvent même ne pas être pertinents dans son contexte particulier. Les résultats peuvent être verbeux, mais ils peuvent aussi être adaptés aux particularités d'un projet spécifique.

L’outyil Pylint recherche cinq catégories de problèmes de plus en plus complexes. 1- Les « Conventions » : ce sont des violations de PEP 8 ou d'autres règles de cohérence dans Python. 2- Les « Refactors » : ils indiquent les « code smells » ou mauvaises odeurs, les erreurs courantes ou les situations où code pourrait être retravaillé pour être plus efficace ou moins confus, comme les importations cycliques ou les fichiers comportant trop de lignes similaires qui pourraient être condensés en une fonction commune. 3- Les « Warnings » (avertissements) : ce sont des problèmes spécifiques à Python, par exemple un code inaccessible (tout ce qui se trouve après un retour dans une fonction) ou des classes auxquelles il manque une méthode init. 4- Les « Errors » (erreurs) : ce sont de véritables bogues de code, comme des variables non définies. 5 - Les « Fatals » (problèmes fatals) : ce sont ceux qui empêchent Pylint de fonctionner. Là encore, ce qui rend Pylint à la fois le plus utile et le plus lourd, c'est la quantité de retour d'information qu'il donne. La bonne nouvelle, c'est qu’il est possible d’affiner la verbosité et la granularité de Pylint par projet ou même par fichier. De plus, le développeur peut utiliser toute une série de plug-ins Pylint qui ajoutent des modalités de contrôles spécifiques, pour du code trop complexe par exemple (longues chaînes de « if », etc.) ou un « linting » pour des builds obsolètes.

Pylint est le meilleur outil pour contrôler la qualité du code, en supposant que cela ne dérange pas le développeur de modifier ses paramètres pour éviter la surcharge.

Black pour aligner un code uniforme

Á la différence des précédents outils, Black n'est pas un linter ou un outil d'analyse de code. Il permet de faire respecter le style pour assurer une meilleure qualité du code. C'est pour cette raison qu’il est inclus dans cette liste, car il permet d'éviter de nombreuses erreurs de style de base de manière préventive. Black est qualifié de « formateur de code intransigeant », intransigeant parce qu'il n'a pas d'options paramétrables, sauf pour la longueur des lignes. Black reformate le code Python dans un style unique, cohérent et lisible, en s'appuyant sur des règles internes pour traiter des problèmes délicats comme les expressions multilignes, de sorte que même celles-ci sont reformatées de manière cohérente. L'un des avantages de de Black, c’est qu'il résout tous les conflits de formatage, évitant de perdre du temps dans des questions triviales, ce qu’on appelle le « bikeshedding », et permet de sortir un linter avec moins de bruit. Inutile de se disputer sur la façon de formater le code d'un projet, ni même de faire une grande partie du travail manuellement. Il est même possible de configurer de nombreux IDE pour qu'ils formatent automatiquement le code avec Black. Autre avantage revendiqué de Black : il rend les commits Git plus propres, puisqu'il réduit le nombre de modifications apportées à un fichier donné.

Le meilleur pour imposer une la conformité stylistique de base à des lignes de code.

Newsletter

La Quotidienne LMI

Recevez chaque matin l’actualité IT de la rédaction.