Another Home Page Blog - pycodestylehttps://blog.anotherhomepage.org/2017-12-08T09:30:00+01:00Python : 3 outils pour analyser son code2017-12-08T09:30:00+01:002017-12-08T09:30:00+01:00Nils Ratuszniktag:blog.anotherhomepage.org,2017-12-08:/post/2017/12/08/python-3-outils-anaylser-code/<p>python, Python
Status: published</p>
<p><img alt="""" src="https://blog.anotherhomepage.org/public/study_in_pink.jpg">Suite à mon billet <a href="/tag/blogmas">blogmas</a> <a href="/post/make-automatiser-quelques-taches-avec-un-makefile">make : automatiser quelques tâches avec un Makefile</a>, une discussion intéressante a suivi sur Mastodon, où <a href="https://oldbytes.space/@dashie" title=""Dashie">Dashie</a> me signalait sa préférence pour <a href="https://www.pylint.org/" title="Pylint">pylint</a> pour analyser la validité de son code Python. Je saisis donc l'occasion, non pas d'argumenter pour mon choix, ou …</p><p>python, Python
Status: published</p>
<p><img alt="""" src="https://blog.anotherhomepage.org/public/study_in_pink.jpg">Suite à mon billet <a href="/tag/blogmas">blogmas</a> <a href="/post/make-automatiser-quelques-taches-avec-un-makefile">make : automatiser quelques tâches avec un Makefile</a>, une discussion intéressante a suivi sur Mastodon, où <a href="https://oldbytes.space/@dashie" title=""Dashie">Dashie</a> me signalait sa préférence pour <a href="https://www.pylint.org/" title="Pylint">pylint</a> 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.</p>
<h3>Exit pep8, bonjour pycodestyle !</h3>
<p>Et là, les choses deviennent très drôles, car je voulais commencer par parler de pep8. Je lance donc la commande <em>pep8</em> dans mon code Python :</p>
<div class="highlight"><pre><span></span><code>nils@dalaran-wifi:~/fabfile$ pep8 *.py
/opt/pkg/lib/python2.7/site-packages/pep8.py:2124: UserWarning:
pep8 has been renamed to pycodestyle <span class="o">(</span>GitHub issue <span class="c1">#466)</span>
Use of the pep8 tool will be removed <span class="k">in</span> a future release.
Please install and use <span class="sb">`</span>pycodestyle<span class="sb">`</span> instead.
$ pip install pycodestyle
$ pycodestyle ...
<span class="s1">'\n\n'</span>
</code></pre></div>
<p>Donc, pep8 est obsolète, il faut utiliser pycodestyle. Heureusement, celui-ci est disponible dans pkgsrc :</p>
<div class="highlight"><pre><span></span><code>nils@dalaran-wifi:~$ sudo pkgin av<span class="p">|</span>grep codestyle
py27-codestyle-2.3.1 Python style guide checker
py27-pep8-1.7.1 Python style guide checker <span class="o">(</span>obsolete, use py-codestyle<span class="o">)</span>
py34-codestyle-2.3.1 Python style guide checker
py34-pep8-1.7.1 Python style guide checker <span class="o">(</span>obsolete, use py-codestyle<span class="o">)</span>
py35-codestyle-2.3.1 Python style guide checker
py35-pep8-1.7.1 Python style guide checker <span class="o">(</span>obsolete, use py-codestyle<span class="o">)</span>
py36-codestyle-2.3.1 Python style guide checker
py36-pep8-1.7.1 Python style guide checker <span class="o">(</span>obsolete, use py-codestyle<span class="o">)</span>
</code></pre></div>
<p>Bon, là aussi le message est clair : pep8 c'est fini, faut changer de crèmerie.</p>
<h3>flake8 l'aggrégateur</h3>
<p>Un autre outil dont j'avais entendu parler, c'est <a href="https://gitlab.com/pycqa/flake8" title="flake8">flake8</a>. 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.</p>
<h3>pylint, qui fait tout, sauf le café</h3>
<p>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 <a href="https://www.logilab.org/blogentry/6883" title="Pyreverse">Pyreverse</a>. 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 !</p>
<h3>En conclusion : faut tester !</h3>
<p>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 !</p>
<p>Vous avez aimé cet article ? Alors partagez-le sur les réseaux sociaux !</p>
<p><em>Crédit photo : <a href="https://www.flickr.com/photos/pasukaru76/5330972736/" title=""Study">Pascal - Study in Pink</a>.</em></p>