Seite wählen

NETWAYS Blog

Weekly Snap: A Journey in the Cloud, Pylint for Python & Christmas Cheer

weekly snap10 – 14 December contemplated the cloud, quality in Python and made merry in NETWAYS style.
Sebastian reflected on a year of cloud computing with OpenNebula, learning the ins and outs of central storage with OCFS2 and NFS, libvirtd and Pacemaker, as well as the feared layer 8.
Meanwhile Alexander suggested Pylint for Python code quality checking and our team celebrated Christmas, bidding Philipp farewell.

Pylint, Pylint on the wall, who has the fairest code of them all?

„You, my Developer, have the fairest of all.“ So oder so ähnlich wünscht man es sich, wenn einem die Qualität des eigenen Programms am Herzen liegt. Für all die Python-Entwickler da draußen, welche nicht jegliche Richtlinien aus dem PEP8 Guide auswendig wissen und es auch sonst im Eifer des Programmierens nicht so ernst mit der Qualität nehmen, bietet Pylint ein sehr nützliches Werkzeug, um so eilig wie geschwind das hässliche Entlein wieder in einen schönen Schwan zu verwandeln. Doch wie soll das gehen, und was unterscheidet es von gängigen Python Source Code Checkern wie beispielsweise PyChecker?
Nun, zunächst einmal bietet Pylint in den Grundfeatures ziemlich das selbe wie PyChecker. Das bedeutet, beide Programme überprüfen den Code auf Qualität und Sauberkeit. Doch während PyChecker in der Altfränkischen „Bassd scho“-Manier arbeitet, ist Pylint eher der strenge Deutschlehrer, der auch jeden noch so kleinen Fehltritt rot anstreicht. Da wird penibel auf Dinge wie die maximale Zeilenlänge (max. 80 Zeichen) oder der maximal erlaubten Zeilenanzahl (max. 1000 Zeilen) innerhalb einer Datei geachtet. Auch vergessene allseits bekannte Kommentare wie „TODO“ oder „FIXME“ werden dem eifrigen Entwickler nochmal ins Gedächtnis gerufen. Wem diese ganzen Richtlinien von PEP8 nicht zusagen oder sowieso schon nach seinen eigenen Standards codet, dem bietet Pylint eine sehr schnelle und einfache Möglichkeit Regeln zu ändern oder sogar mithilfe von Modulen zu erweitern.
Wie funktioniert nun also dieses wunderbare Werkzeug? Wir starten den ausführlichen Test zunächst einmal mit der Standardkonfiguration:

pylint pfad/zum/projekt

Nach einer kurzen Wartezeit (je nach Projektumfang) spuckt das Programm auch schon eine Statistik mit jeglichen Makel und Fehler. Sogar eine Punktwertung wie im guten alten Sport wird vergeben! Wer seine Punkte nun verbessern möchte, muss sich nun daran machen, die gelisteten Meldungen abzuarbeiten und so seinen Code zurechtschleifen. Möchte man gewisse Regeln ändern oder Ausnahmen hinzufügen, so kann man dass indem man eine neue rcfile generiert:

pylint --generate-rcfile > ~/.pylintrc

Diese Datei öffnet man dann mit dem Editor seiner Wahl und fügt seine Änderungen hinzu. Dank der ausführlichen Dokumentation findet man sich innerhalb der configfile sehr schnell zurecht.
Wer jetzt noch gerne wüsste, wie denn das eigene Kind so aussieht, der kann sich mithilfe des mitgelieferten Programms „pyreverse“ eine Art UML-Diagramm generieren lassen:

pyreverse pfad/zum/projekt

Generiert werden zwei .dot dateien, die mithilfe folgender Befehle ganz leicht in beispielsweise .png dateien umgewandelt werden können:

dot -Tpng packages_Name.dot -o packages-Name.png
dot -Tpng classes_Name.dot -o classes-Name.png

Mithilfe eines solch strengen Lehrers sollte einem nichts mehr im Wege stehen, um das Märchen wahr werden zu lassen!