Unser Code soll schöner werden

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).

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

Wieder zuhause

Die Bit-Bots sind gestern Abend wieder mehr oder weniger sicher auf dem Hamburger Flughafen gelandet. Das Team blickt zurück auf eine erfolgreiche Weltmeisterschaft, mit viel Austausch mit anderen Teams und auch kleinen, durchaus verdienten, Erfolgen (Unser Roboter hat tatsächlich geworfen!).

Eine Offizielle Gesamtwertung in die die Technical Challenge hinein gerechnet wird wurde leider noch nicht veröffentlicht. Da wir dort 8 Punkte erreicht haben und sich nur 6 Teams überhaupt getraut haben zu den Challenges anzutreten, vermuten wir trotz unserer Niederlagen einen Platz in den Top Ten. Bisher können nur die Ergebnisse der einzelnen Spiele auf der Seite der Veranstalter eingesehen werden.

Während sich die Teammitglieder die mit geflogen sind noch von ihrem Jet-Lag erholen gibt es für euch eine kleine Visualisierung von der Arbeit an unserer Software in den letzten Wochen.

Die Knoten in dieser Baumstruktur entsprechen Dateinen und Verzeichnissen im Hauptentwicklungszweig unseres Versionierungssystems.
Ein Tag entspricht in etwa 10 Sekunden der Visualisierung und man kann zusehen wie Entwickler das Projekt mit jedem commit beeinflussen (grün = hinzufügen, orange = bearbeiten, rot = löschen). Am 15.Juni war der Abflug unseres Teams. Wie der Wettbewerb unsere Aktivität beeinflusst hat kann man deutlich erkennen. (Die Zeitangabe ist in CEST, die mexikanische Zeit entspricht -7 Stunden)

Für die Technisch Interessierten: Wir benutzen gource als Visualisierungstool für git. Linux-User können es direkt über ihre Softwareverwaltung installieren. Wechselt man nun in ein Repository und führt „gource“ dort aus, wird es eine Visualisierung von eurem eigenen Projekt anzeigen. Ziemlich viel Show für gerade einmal 10 Sekunden Arbeit!

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail