Umgestellt Code-Review

Mit der richtigen technischen Unterstützung sind Code-Reviews ein wichtiges und effektives Mittel zur Verbesserung der Software-Qualität. Ohne ein Tool zur übersichtlichen Anzeige des geänderten Codes und zur Kommunikation zwischen den Entwicklern, wird sich jedoch kaum eine effiziente Review-Kultur entwickeln lassen. Doch welches Tool darf es sein?

Bisher setzten wir auf Atlassian Crucible in Verbindung mit Fisheye. Hauptgrund dafür war die hochgradige Integration in das von uns verwendete Ticketsystem JIRA Software. Alle 3 Produkte stammen vom selben Entwickler und arbeiten daher bestens zusammen. Auf der anderen Seite bietet jetBrains – der Hersteller unserer Standard-IDEs – ebenfalls ein System für Code-Reviews an, dass sich wiederum bestens in die IDE integriert. Grund für uns, beide Systeme genauer anzuschauen.

Wir beschränken uns bei diesem Vergleich auf die genannten Tools von Atlassian und jetBrains, da beide jeweils eine sehr gute Integration in unsere ganz spezielle Sytemlandschaft versprechen. Dieser Vergleich hat also nicht den Anspruch, ein vollständiger Marktüberblick zu sein. Da wir jedoch bei weitem nicht das einzige Software-Unternehmen sind, das auf JIRA als Ticketsystem, sowie PhpStorm, IntelliJ und Konsorten als IDEs setzt, dürfte der Beitrag auch für andere Interessant sein.

Repository Browsing / Diff-Tool

Ein gutes Review-Tool sollte es erlauben, Code aus allen bekannten Versionsverwaltungen bequem und übersichtlich darzustellen. Dazu erwartet man ein Diff-Tool, dass Unterschiede zwischen verschiedenen Versionen einer Datei visuell aufarbeitet. Atlassians Crucible tut das erstaunlicherwiese nur sehr eingeschränkt und überlässt den Rest seinem Schwesterprodukt Fisheye. Wir haben Crucible bisher noch nicht ohne Fisheye eingesetzt, die Hinweise seitens Atlassian dazu deuten aber an, dass Crucible allein nicht wirklich zufriedenstellend arbeitet.

Upsource liefert hier sehr zufriedenstellende Ergebnisse. Funktional gibt es an beiden Systemen nichts auszusetzen. Einen Pluspunkt gibt es für Upsource, weil es seine Aufgabe auch ohne Unterstützung einer zweiten Software erfüllt.

Code Review

Ein Code Review ist die Überprüfung des durch einen Entwickler geschriebenen Programmcodes durch einen Gutachter (Reviewer). Ziel ist es, die Code-Qualität zu verbessern – ohne dem Entwickler „auf den Schlips zu treten“.  Über den tatsächlichen Nutzen kann gestritten werden. Unserer Erfahrung nach sind Reviews immer dann sehr nützlich, wenn sich ein Entwickler an einer bestimmten Stelle unsicher ist und eine zweite Meinung einholen möchte.

Sowohl Crucible, als auch Upsource unterstützen die Zusammenarbeit mehrerer Entwickler hinreichend gut. Trotzdem gibt es Unterschiede – vor allem bei der Integration des Review-Workflows in die angrenzenden Software-Systeme:

Collaboration

Wenn das Klima in einem eingespielten Team stimmt, laden Entwickler ihre Kollegen aus eigenem Antrieb und ohne äußeren Druck zu Reviews ein. Wobei das Klima im Team nicht die einzige Voraussetzung für eine hohe Review-Quote ist. Müssten Code-Seiten ausgedruckt, per Bleistift kommentiert und die Änderungen händisch wieder in die IDE übernommen werden, so wären wohl nur wenige zu einem Review zu motivieren. Review-Tools müssen den Überprüfungsprozess so stark wie möglich vereinfachen. Einladungen zu Reviews sollten bestenfalls mit einem einfachen Mausklick versendet werden können.

Upsource schlägt dazu sogar den bestgeeigneten Reviewer vor, indem es analysiert, wer die meisten und neuesten Commits zu einer Datei beigetragen hat. Reviewer können in beiden Systemen per Click einzelne Code-Zeilen kommentieren und übersichtlich Unterhaltungen im Quelltext führen – ohne dass diese tatsächlich im Codes gespeichert werden.

E-Mail-Notifications informieren über Einladungen zu Reviews und Antworten auf Kommentare. Beide Systeme machen die Kommunikation der Entwickler untereinander sehr einfach.

Anbindung an Jira Software

Uns ist eine hervorragende Integration des Review-Tools in unsere sonstige Tool-Landschaft sehr wichtig. Als Ticket- und Projektplanungssystem verwenden wir JIRA-Software. Neben der Projektplanung erfolgt hier auch die Zeiterfassung und die Kommentierung von Aufgaben. Damit geht einher, dass auch ein guter Teil der Dokumentation unserer Arbeit über das Ticketsystem mit seinen Erweiterungen läuft. Fisheye ermöglicht es, jeden im Rahmen des Tickets entstandenen Commit direkt über einen Link am Ticket anzeigen zu lassen. Daneben können Reviews gestartet und deren Ergebnisse verfolgt werden. So befinden sich am Ticket Kommentare, Notizen, der geschriebene Code und die Ergebnisse von Reviews an einem zentralen Ort.

Upsource bietet zwar genau wie Crucible die Möglichkeit aus einem Review heraus Tickets in JIRA anzulegen, es existiert aber keine Integration, die aus dem Ticket heraus den Zugriff auf Commits oder Reviews ermöglicht. Für uns ist das ein erheblicher Rückschritt und wir werden versuchen, dafür eine Lösung  zu finden.

Anbindung an die jetBrains IDEs

Auf der anderen Seite bietet Upsource die Integration in die IDEs von jetBrains und damit noch direkter in die Arbeitswelt des Entwicklers. Denn noch viel lieber als im Ticketsystem hält sich der Programmierer in seiner IDE auf. So können Reviews direkt in der IDE gestartet und verfolgt werden. Das ist noch um einiges komfortabler, als in einer Web-Oberfläche zu arbeiten – auch wenn die Möglichkeiten von Desktop- und Web-Applikation sich zunehmen annähern.

In Sachen Anbindung an das Ticketsystem und die IDE wiegen sich die vor und Nachteile aus unserer Sicht nahezu auf. Wenn sich noch eine Lösung findet, wie sich der Code-Browser von Upsource besser an ein JIRA-Ticket verknüpfen lässt, dann wird es allerdings eng für Crucible.

Preise

Dieser Trend lässt sich beim Thema Preis schon viel deutlicher sehen. Wesentlicher Faktor für die Kauf-Entscheidung ist und bleibt natürlich der Preis, der je nach Team-Größe bei beiden System enorm steigen:

Upsource Crucible+Fisheye
5 Users kostenfrei 20 USD
(10 USD + 10 USD*)
10 Users kostenfrei 2.000 USD
(1.000 USD + 1.000 USD)
25 Users 1.300 USD 3.000 USD
(1.500 USD + 1.500 USD)
50 Users 2.500 USD 5.500 USD
(2.750 USD + 2.750 USD)
100 Users 4.500 USD 10.000 USD
(5.000 USD + 5.000 USD)

Stand: Juni 2017; Preise verstehen sich zzgl. gesetzl. MwSt.
* Fisheye in der 5-Benutzer-Version ist auf 10 Committer und 5 Repositorys beschränkt!

Und hier ist dann aus unserer ganz subjektiven Sicht der Umstieg auf Upsource beschlossene Sache gewesen. Ich denke die oben eingefügte Tabelle spricht für sich. Crucible allein könnte mit den Preisen von Upsource noch konkurrieren. Möchte man einen vergleichbaren Leistungsumfang erhalten, ist die zweite Lizenz für Fisheye jedoch unverzichtbar. Und dadurch liegen die Kosten für Atlassians Lösung bei mehr als dem doppelten im Vergleich zu denen von jetBrains.

Gerade für kleine Teams wird der Unterschied noch deutlicher, da sich jetBrains hier – zumindest noch – sehr spendabel zeigt und eine kostenlose Lizenz für Teams mit bis zu 10 Mitgliedern anbietet. Anders als bei 5-Nutzer-Lizenz für Crucible+Fisheye für zusammen 20 US-Dollar, gibt es bei der kostenfreien 10-Nutzer-Lizenz von Crucible auch keine Einschränkung bei der maximalen Anzahl an verwaltbaren Repositories.

Im Zuge einer Neugründung wollen neben unzähligen betriebswirtschaftlichen Entscheidungen natürlich auch die Fragen nach den ganz alltäglichen IT-Werkzeugen für das eigene Unternehmen geklärt werden. Mit unserer Artikel-Serie „Umgestellt“ möchten wir einen Einblick in die von uns eingesetzte IT-Landschaft geben.
Frühere Artikel aus der Serie:
Umgestellt (2): Hardware vs. IaaS
Umgestellt (1): macOS vs. Ubuntu