Suite à mon billet blogmas make : automatiser quelques tâches avec un Makefile, une discussion intéressante a suivi sur Mastodon, où Dashie me signalait sa préférence pour pylint pour analyser la validité de son code Python. Je saisis donc l'occasion, non pas d'argumenter pour mon choix, ou celui de Dashie, mais plutôt d'énumérer quelques possibilités pour qui souhaite avoir un code lisible, et se conformer à des conventions de style de code.

Exit pep8, bonjour pycodestyle !

Et là, les choses deviennent très drôles, car je voulais commencer par parler de pep8. Je lance donc la commande pep8 dans mon code Python :

nils@dalaran-wifi:~/fabfile$ pep8 *.py
/opt/pkg/lib/python2.7/site-packages/pep8.py:2124: UserWarning: 

pep8 has been renamed to pycodestyle (GitHub issue #466)
Use of the pep8 tool will be removed in a future release.
Please install and use `pycodestyle` instead.

$ pip install pycodestyle
$ pycodestyle ...

  '\n\n'

Donc, pep8 est obsolète, il faut utiliser pycodestyle. Heureusement, celui-ci est disponible dans pkgsrc :

nils@dalaran-wifi:~$ sudo pkgin av|grep codestyle
py27-codestyle-2.3.1 Python style guide checker
py27-pep8-1.7.1      Python style guide checker (obsolete, use py-codestyle)
py34-codestyle-2.3.1 Python style guide checker
py34-pep8-1.7.1      Python style guide checker (obsolete, use py-codestyle)
py35-codestyle-2.3.1 Python style guide checker
py35-pep8-1.7.1      Python style guide checker (obsolete, use py-codestyle)
py36-codestyle-2.3.1 Python style guide checker
py36-pep8-1.7.1      Python style guide checker (obsolete, use py-codestyle)

Bon, là aussi le message est clair : pep8 c'est fini, faut changer de crèmerie.

flake8 l'aggrégateur

Un autre outil dont j'avais entendu parler, c'est flake8. Celui-ci est assez intéressant, car c'est justement une combinaison de plusieurs outils : pep8, pyflakes, mccabe, et potentiellement d'autres via des plugins.

pylint, qui fait tout, sauf le café

Pylint ne fait pas que vérifier la conformité par rapport à des standards ou styles de code, il permet aussi de faire de la détection d'erreur, de proposer du refactoring de code et de faire des diagrammes UML via Pyreverse. Entre ça, et l'intégration à un environnement de développement ou à un système d'intégration continue, le moins qu'on puisse dire, c'est que pylint est très complet !

En conclusion : faut tester !

Je n'ai pas encore eu le temps de me faire un avis. Je compte bien sûr tester tout cela, dès que je remet le nez dans du code Python !

Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux !

Crédit photo : Pascal - Study in Pink.