Certified Method Park Engineer: Code Review mit Gerrit

Im Rahmen unseres internen Zertifizierungsprogramms, dem Certified Method Park Engineer (CMPE), fand unsere Schulung zum Thema “Code Review mit Gerrit” statt. Teilgenommen haben 14 Method Park Engineers sowie ein externer Product Owner eines unserer Engineering-Projekte. In dem vierstündigen Training lernten sie, wie man Gerrit als Werkzeug für kollaborative Code-Reviews einsetzt, und damit einen Workflow mit kontinuierlicher Integration in ein zentrales Git-Repository etabliert.

Einführung und erste Übung

In den vorangegangenen Teilen des CMPE-Moduls “Tools” wurden bereits Konfigurations-Management-Systeme im Allgemeinen und Git im Speziellen behandelt. Daher waren alle Engineers bereits mit den Grundlagen der Benutzung von Git vertraut.

Daniel führte zunächst in verschiedene Kollaborations-Workflows (am bekanntesten ist sicherlich der “Pull Request”-Workflow von GitHub). Außerdem veranschaulichte er die Funktionsweisen von “git merge” und “git rebase”. Im Anschluss war es dann auch direkt Zeit für die erste Übung.

Daniel und Simon erklären Gerrit
© Anna Zeidler

In unserem Übungsrepository sollte eine Template-Datei von jedem Teilnehmer kopiert, editiert, hinzugefügt und anschließend zum Review freigegeben werden. Dabei hatte auch unsere wachsame Continuous Integration (ein Jenkins mit  “Gerrit Trigger”-Plugin) ein Auge auf die hochgeladenen Änderungen und vergab negative “Votes” für einige fehlgeschlagene Tests.
Die notwendigen Änderungen wurden wiederum von den Teilnehmern in ihre Commits eingearbeitet und diese erneut hochgeladen.

Gerrit Konzepte und Code Reviews

Nach dem ersten “Hands On” mit Gerrit stiegen wir tiefer ab in die Konzepte und die Technik dahinter.

Dabei ergeben sich einige Fragen:
Wie ordnet Gerrit Git-Commits mit unterschiedlichen SHA1-Hashes (sogenannte “Patch Sets”) einer bestimmten Veränderung (“Change”) zu? Welche Möglichkeiten habe ich, Feedback zu geben? Wie funktioniert das “Voting”-System und was muss ich tun, damit meine Änderung im Repository landet?

Wie landet meine Änderung im Repository?

Bevor eine Änderung im eigentlichen Repository landen kann, benötigt sie eine bestimmte Anzahl von „Votes“ in konfigurierbaren Kategorien. Die Gerrit Standardeinstellung bietet die folgenden zwei Kategorien an, um Feedback zu geben:

  1. Code Review: Der Code bzw. die Änderung sieht korrekt aus
  2. Verified: Ich habe die Änderung ausprobiert und sie funktioniert

Wenn die Tests in unserer Continuous Integration „grün laufen“, dann vergibt unser Jenkins einen positiven Vote in der „Verified“-Kategorie. Der Autor der Änderung benötigt nun nur noch einen Kollegen,
der ihm positives Feedback zur Code-Qualität gibt.

Abschluss der praktischen Übung

Nachdem die Theorie und diverse Diskussionspunkte abgehandelt waren, durfte jeder Teilnehmer die Änderung seines Nachbarn unter die Lupe nehmen und detailliertes Feedback geben. Dabei sollten sie nicht nur auf den Inhalt der Änderung achten, sondern auch auf die Qualität der Beschreibung, also der Commit-Message.

Als alle Reviewer zufrieden gestellt waren, d.h. dass jede Änderung eine ausreichende Anzahl an positiven „Votes“ in den entsprechenden Kategorien erhalten hat, galt es die jeweiligen Änderungen zu “submitten”.
Da es sich um ein gemeinsames Repository handelte, mussten zwar viele Commits mehrmals mit “git rebase” aktualisiert werden, jedoch fanden schlussendlich alle Änderungen ihren Weg in das Repository.

Best Practices

Als letztes Kapitel haben wir die Best Practices beim gegenseitigen Begutachten von Code behandelt. Wie stelle ich sicher, dass meine Änderungen überhaupt “reviewbar” sind? Reiche ich einen 1000-zeiligen Patch ein, oder kann ich die Änderung vielleicht in kleinere Teile schneiden und damit meinen potentiellen Reviewern ihre Aufgabe ein wenig erleichtern? Auch hier haben wir lebhaft diskutiert und am Ende einen Bogen gespannt zu den anfänglichen Themen Git-Workflows und -Tools im Allgemeinen.

Du möchtest mehr zum Thema Git und Continuous Integration erfahren? Ein Blick in unseren Seminarkatalog zeigt Dir unsere Hands-On-Workshops.