Codereview

von Fabian Lemke
Komik mit überzogener Kritik am Quellcode eines anderen Entwickelnden
xkcd.com/1833

Was ist das?

Was ist das für uns?

  • besseres Verständnis
  • voneinander lernen
  • verteiltes Wissen
  • bessere Qualität
Witz, das das außergewöhnliche, die NullPointer-Ausnahmen sind.

ein paar Regeln

Komik mit überzogener Kritik am Quellcode eines anderen Entwickelnden
xkcd.com/1833

ein paar Regeln

  • von und mit einander lernen
  • aufeinander eingehen
  • kein Lästern →
    jeder macht Fehler oder ist einmal betriebsblind

Historie im Bereich

  • Einzelne haben angefangen
  • Neue Mitarbeiter*innen wurden zur Einarbeitung aufgefordert
  • hat automatisch ohne Vorgabe von oben an Akzeptanz gewonnen
  • wird breit verwendet
  • mittlerweile verbindlich
  • Aufnahme in den Prozess

Gitlab

Gitlab Logo
Gitlab Logo
Aussage Gitlab:
GitLab is a complete DevOps platform

Merge Request

Karrikatur, wie eine KI git Commits abweist wegen mangelnder Sorgfalt
turnoff.us/geek/when-ai-meets-git

Merge Request

Karrikatur, wie eine KI git Commits abweist wegen mangelnder Sorgfalt
  • entspricht Pull Request in Github
  • grundsetzlich nur Diff von Branches
  • viele Extras enthalten
  • offizielle Doku

Jira

Gitlab Logo

Einstellungen

Einstellungen

Live


Befehle vom klonen bis zum erstellen und pushen des Branches

Beim Pushen wird auch direkt der Link für einen MR dargestellt.


Nach dem Push wird auf der Gitlab Startseite und im Repo angeboten einen MR dafür zu erstellen

Erstellungsmaske für MR
  • Quell- und Zielbracnh
  • Titel
    • "Draft:" oder "WIP:" zeigen, dass der Branch noch in Arbeit ist.
  • Zugewiesener, Meilenstein und Label
  • Squash und Delete Voreinstellung

Ansicht des neue angelegten MRs

Quellcode angepasst

Merge Request stellt Änderungen dar.

Kommentare als Review ergänzen

Mergekonflikte werden direkt erkannt und gemeldet.

Command-Line Information

kleine Mergekonflikte auch direkt online lösbar

"Draft:" oder "WIP:" verhindern Merge weiterhin.

Jetzt kann gemergt werden.

Ablauf

  1. Jira-Ticket in Bearbeitung nehmen
  2. Branch erstellen und pushen (noch ohne Änderungen)
  3. Merge-Request WIP/Draft erstellen
  4. Entwicklung abschließen
  5. "WIP:" oder "Draft:" entfernen
  6. Jira-Ticket in Status "Code Review" nehmen und Reviewer übergeben
  7. nach erfolgreichem Review mergen (mit Squash und Löschen)

Code Review

=

Pair Programming

???

Was ist eigentlich Pair Programming?

Driver kontrolliert den Rechner, handelt aber nicht eigenmächtig.

Navigator gibt den Kurs in Absprache vor, aber soll nicht blind befolgt werden.

Tipps

Merge Requests müssen nicht durch jemand anderen bearbeitet werden.

schöner ist es aber

manueller Merge

Es kann weiterhin über beliebige Tools gemergt werden. Dies wird erkannt und dargestellt im MR.

Gitlab-Einstellungen

Gitlab-Benutzereinstellungen: Layout auf Fluid stellen.

Gitlab-Einstellungen

Gitlab, wie es aussieht mit dem Layout 'Fixed'

Gitlab-Einstellungen

Gitlab-Benutzereinstellungen: Whitespace-Changes werden nicht angezeigt.

Gitlab-Einstellungen

Gitlab-Benutzereinstellungen: Whitespace-Changes werden nicht angezeigt.
Einstellungen zur Ansicht im Merge Request

kleine Merge Requests

www.monkeyuser.com/2018/pull-request

Und ist jetzt alles perfekt?

oder geht da noch mehr?

dedizierte Codereview Software

  • Regeln/automatische Vergabe
  • CI Integration
  • Übersichten und Statistiken
  • ...


Vieles davon kann Gitlab auch in der kostenpflichtigen Variante (4$/21$ pro Benutzer/Monat)

Upsource

www.jetbrains.com/upsource

Crucible

www.atlassian.com/de/software/crucible

Gerrit

www.gerritcodereview.com

Kosten

Upsource Crucible Gerrit
25 Benutzer 1300 € ~ 1400 € 0 €
50 Benutzer 2500 € ~ 2570 € 0 €
100 Benutzer 4500 € ~ 4660 € 0 €
250 Benutzer 9000 € ~ 9320 € 0 €
500 Benutzer 12000 € ~ 11180 € 0 €

Prozesse und Richtlinien

Folien

codereview.s.kikkirej.net

Kontakt