Wir leben in modernen Zeiten, und so hat uns Gott Werkzeuge an die Hand gegeben mit dem wir in der Lage sind Python-Code auf seinen Stil hin zu überprüfen.
Mit PEP-008 existiert schon sehr lange ein Standard für lesbaren Python-Code, und mit pep8 sowie pyflakes existieren Programme die Quellcode auf gewisse stilistische Fehler hin überprüfen können. flake8 vereint diese beiden Programme.
Viele der Bit-Bot-Entwickler setzen eine IDE ein, welche den Code beim Schreiben automatisch überprüft.
Nun habe ich mal ein Script geschrieben dass ein bisschen weiter geht.
Eine Nacht lang hat mein Programm folgendes getan:
Ermitteln aller Commits im master Für jeden Commit: Auschecken des Commits Ermitteln aller Codezeilen (mit cloc) Ermitteln aller Python-Stilfehler (mit flake8) Ermitteln des Autors Ermitteln des Commitzeitpunkts Berechnen der Fehlerprozentzahl auf Codezeilen + Leerzeilen Berechnen der Differenz in der Fehlerprozentzahl zum Vorgängercommit
Der Prozess der Datenaufnahme dauerte eine ganze Nacht für die insgesamt 4148 Commits die wir zu diesem Zeitpunkt hatten.
Die so gewonnenen Daten (python-dictionary) habe ich zunächst als yaml-datei gespeichert, was sich als Fehler herausstellte. Beim erneuten Einlesen der 6,2 MB großen yaml-datei wurden nämlich gigantische Mengen meines Arbeitsspeichers in Anspruch genommen und der Prozess dauerte mehrere Minuten. Nachdem ich hingegen die Daten einfach mit cpickle gespeichert hatte, konnte ich sie binnen einer Sekunde einlesen, ohne dass mein Laptop ins Schwitzen kam.
Nun nachdem ich die Daten hatte konnte ich sie analysieren. Zunächst habe ich ermittelt welche Autoren den Code eher verschönern – und welche ihn weniger hübsch machen. Für jeden Autor habe ich einen Score berechnet, der die Summe der Änderungen des Fehleranteils durch den Autor repräsentiert.
Hat ein Autor den Fehleranteil oft reduziert, ergibt sich ein negativer Wert. Hat er den Fehleranteil häufig erhöht, so entsteht ein Postitiver Wert. Die dabei gewonnenen Ergebnisse reichten von +62.9 (schlechtestes) bis -82 (bestes)
In einem Zweiten Schritt habe ich dann den Verlauf unseres Softwarezustandes über die letzten 2,5 Jahre visualisiert. Neben den Fehlerprozentzahlen habe ich auch die Kommentarmenge des Codes mithilfe von pygal visualisiert.
Mit einem hinreichend modernen Webbrowser könnt ihr das Ergebnis hier betrachten, für ältere Browser wird eine schnöde .png angezeigt.
Falls ich die Zeit finde meinen Code in ein Benutzbares Programm zu verwandeln stelle ich es natürlich gern zur Verfügung. Wer mag kann mich dazu kontaktieren (wer mich nicht kennt kann das über unsere Info-Adresse tun).