Topics Version control Was ist eine Code Review?

Was ist eine Code Review?


Eine Code Review ist eine Peer Review von Code, die Entwickler(inne)n hilft, die Codequalität sicherzustellen oder zu verbessern, bevor sie sie zusammenführen und ausliefern.

Was sind Code Reviews und wie funktionieren sie?

Code Reviews, auch Peer Reviews genannt, dienen der Qualitätssicherung der Codebase.

Code Reviews sind methodische Bewertungen von Code, die darauf abzielen, Fehler zu identifizieren, die Codequalität zu erhöhen und Entwickler(innen) beim Erlernen des Quellcodes zu unterstützen.

Nachdem ein(e) Softwareentwickler(in) die Programmierung abgeschlossen hat, ist eine Code Review ein wichtiger Schritt im Softwareentwicklungsprozess, um eine zweite Meinung zur Lösung und Implementierung einzuholen, bevor sie in einen upstream-Branch wie einen Feature-Branch oder den main-Branch zusammengeführt wird. Prüfer(innen) können auch als zweiter Schritt bei der Identifizierung von Fehlern, Logikproblemen, unentdeckten Randfällen oder anderen Problemen fungieren.

Diese Praxis befähigt Code-Autor(inn)en und -Prüfer(innen) gleichermaßen, Sicherheitslücken zu identifizieren, Qualitätsstandards einzuhalten und Wissen über Programmiersprachen und Frameworks hinweg auszutauschen. Prüfer(innen) können aus jedem Team oder jeder Gruppe stammen, solange sie Domain-Expert(innen) sind. Wenn die Codezeilen mehr als eine Domain abdecken, sollten zwei Expert(inn)en den Code überprüfen.

Warum sind Code Reviews wichtig?

Die Entwicklung eines starken Code-Review-Prozesses bildet die Grundlage für eine kontinuierliche Verbesserung und verhindert, dass instabiler Code an die Kund(inn)en ausgeliefert wird. Code Reviews sollten Teil des Workflows eines Softwareentwicklungsteams werden, um die Codequalität zu verbessern und sicherzustellen, dass jeder Code von einem anderen Teammitglied betrachtet wurde.

Der Code-Review-Prozess ist auch ein wichtiger Teil bei der Verbreitung von Wissen in einem Unternehmen. Aus diesen und weiteren Gründen gaben 76 % der Entwickler(innen), die an der globalen DevSecOps-Umfrage 2022 teilgenommen haben, an, dass Code Reviews „sehr wertvoll“ seien.

Welche Vorteile bringen Code Reviews?

  • Wissen teilen: Wenn Softwareentwickler(innen) Code überprüfen, sobald ein Teammitglied Änderungen vornimmt, können sie neue Techniken und Lösungen erlernen. Code Reviews helfen jungen Entwickler(inne)n, von erfahrenen Teammitgliedern zu lernen, ähnlich wie die Paarprogrammierung Entwickler(inne)n effektiv hilft, Fähigkeiten auszutauschen und Ideen zu teilen. Durch die Verbreitung von Wissen im gesamten Unternehmen stellen Code Reviews sicher, dass keine Person ein Single Point of Failure ist. Jeder hat die Möglichkeit, Reviews durchzuführen und Feedback zu geben. Geteiltes Wissen hilft den Teammitgliedern auch bei der Urlaubsplanung, da jeder im Team Hintergrundwissen zu einem Thema hat.
  • Fehler früher entdecken: Anstatt Fehler zu entdecken, nachdem eine Funktion ausgeliefert wurde, und sich zu beeilen, um einen Patch zu veröffentlichen, können die Entwickler(innen) Probleme sofort finden und beheben, bevor die Kund(inn)en sie überhaupt sehen. Wenn der Review-Prozess durch Unit-Tests an einen früheren Zeitpunkt des Lebenszyklus der Softwareentwicklung verschoben wird, können Entwickler(innen) mit neuem Wissen an Korrekturen arbeiten. Wenn Entwickler(innen) bis zum Ende des Lebenszyklus warten, um eine Überprüfung durchzuführen, haben sie oft Schwierigkeiten, sich an den Code, die Lösungen und die Argumentation zu erinnern. Die statische Analyse ist eine kostengünstige, effiziente Möglichkeit, den Geschäfts- und Kundenwert zu erfüllen.
  • Einhalten der Compliance: Entwickler(innen) haben verschiedene Hintergründe und Schulungen, die ihren Programmierstil beeinflussen. Wenn Teams einen Standard-Codierungsstil haben wollen, helfen Code Reviews allen, die gleichen Standards einzuhalten. Dies ist besonders wichtig für Open-Source-Projekte, bei denen mehrere Personen Code beisteuern. Bei Peer Reviews werden Betreuer(innen) involviert, um den Code zu bewerten, bevor Änderungen gepusht werden.
  • ** Sicherheit verbessern:** Code Reviews schaffen ein hohes Maß an Sicherheit, vor allem wenn Sicherheitsexpert(inn)en eine gezielte Überprüfung durchführen. Die Anwendungssicherheit ist ein wesentlicher Bestandteil der Softwareentwicklung, und Code Reviews helfen dabei, Sicherheitsprobleme zu erkennen und die Einhaltung von Vorschriften zu gewährleisten. Mitglieder des Sicherheitsteams können den Code auf Sicherheitslücken überprüfen und die Entwickler(innen) auf die Bedrohung aufmerksam machen. Code Reviews sind eine gute Ergänzung zu automatischen Scans und Tests, die Sicherheitslücken aufdecken.
  • ** Zusammenarbeit verbessern:** Wenn Teammitglieder gemeinsam an einer Lösung arbeiten, fühlen sie sich eher verantwortlich für ihre Arbeit und haben ein stärkeres Gefühl der Zugehörigkeit. Autor(inn)en und Prüfer(innen) können zusammenarbeiten, um die effektivsten Lösungen für die Anforderungen der Kund(inn)en zu finden. Es ist wichtig, die Zusammenarbeit über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu stärken, um Informationssilos zu vermeiden und einen nahtlosen Workflow zwischen den Teams aufrechtzuerhalten. Um Code Reviews erfolgreich durchführen zu können, ist es wichtig, dass die Entwickler(innen) eine Mentalität für Code Reviews entwickeln, die eine solide Grundlage für die kollaborative Entwicklung hat.
  • Code-Qualität verbessern: Code Reviews sind ein wichtiges Mittel, um sicherzustellen, dass du hochwertigen Code und hochwertige Software auslieferst. Jemand, der deine Codebase kennt, kann Probleme mit der Codequalität bemerken, die automatisierte Tests möglicherweise übersehen. Er oder sie kann dir sogar helfen, technical debt zu reduzieren.

Welche Nachteile haben Code Reviews?

  • Längere Zeit bis zur Auslieferung: Die Review-Zeit könnte den Freigabeprozess verzögern, da die Prüfer(innen) mit den Autor(inn)en zusammenarbeiten müssen, um Probleme zu besprechen. Je nach Workload kann es vorkommen, dass eine Überprüfung nicht so schnell abgeschlossen werden kann, wie ein(e) Autor(in) es sich wünscht. Diese Herausforderung kann durch den Einsatz von Code-Review-Tools überwunden werden, die automatische Tests zur Fehlersuche beinhalten. Automatisierte Tools sind ein effektiver Weg, um Entwickler(inne)n mehr Zeit zu geben, damit sie sich auf die größeren Herausforderungen der Softwareentwicklung konzentrieren können, anstatt einfache Lint-Fehler hervorzuheben.
  • Ablenkung des Fokus von anderen Aufgaben: Entwickler(innen) sind oft mit einem hohen Workload konfrontiert und ein Code Review kann ihren Fokus von anderen Aufgaben mit hoher Priorität ablenken, für deren Erfüllung sie verantwortlich sind. Teammitglieder müssen sich unter Umständen entscheiden, ob sie ihre Aufgabe zu Ende bringen oder ihre Arbeit unterbrechen, um eine Code Review durchzuführen. In beiden Fällen verzögert sich die Arbeit irgendwo im Unternehmen. Um dieses Problem zu vermeiden, können Teammitglieder ein Reviewer-Roulette oder eine Liste von Fachexpert(inn)en erstellen, damit einzelne Entwickler(innen) nicht mit Anforderungen überschwemmt werden.
  • Große Reviews bedeuten längere Review-Zeiten: Wenn Entwickler(innen) Code Reviews für eine große Änderung durchführen müssen, können sie viel Zeit mit der Prüfung des Codes verbringen. Umfangreiche Code Reviews sind schwierig zu bewerten, und die Entwickler(innen) durchlaufen den Prozess schnell, um ihn rechtzeitig abzuschließen, was die Qualität des Feedbacks beeinträchtigt. Die inkrementelle Codeentwicklung verhindert diese Herausforderung, indem sie es den Prüfer(inne)n ermöglicht, einen kleinen Teil des Codes mehrmals zu prüfen, anstatt eine große Änderung auf einmal vorzunehmen.

Vier Ansätze für das Code Review

Einige dieser Nachteile können minimiert werden, indem du die für dein Team am besten geeignete Code-Review-Methode auswählst. Hier sind vier gängige Ansätze für Code Reviews:

Paarprogrammierung

Bei der Paarprogrammierung arbeiten zwei Entwickler(innen) in Echtzeit zusammen – eine(r) schreibt den Code (Pilot) und eine(r) überprüft ihn (Navigator). Pairing-Sitzungen sind bei Entwicklungsteams beliebt, da Teammitglieder zusammenarbeiten, um die effektivste Lösung für eine Herausforderung zu finden. Die Teammitglieder teilen ihr Wissen und können Schwierigkeiten schnell überwinden, indem sie gemeinsam Ideen durcharbeiten und auf ihr Fachwissen zurückgreifen.

Die Vorteile der Paarprogrammierung

  • Wissenstransfer
  • Verhinderung von Informationssilos
  • Lösung komplexer Probleme
  • Erhöhung der Moral
  • Aufdeckung weiterer Fehler
  • Remote-fähig

Die Nachteile der Paarprogrammierung

  • Ist Zeitaufwendig
  • Kann überstrapaziert werden
  • Ist schwer zu messen

Over-the-Shoulder-Review

In einem Over-the-Shoulder-Review arbeiten zwei Entwickler(innen) – Autor(in) und Prüfer(in) – persönlich oder remote über einen geteilten Bildschirm zusammen. Die Person, die den Code geschrieben hat, erklärt den abgeschlossenen Änderungsvorschlag und bietet eine Begründung für die gewählten Lösungen. Die überprüfende Person stellt Fragen und macht Vorschläge, ähnlich wie bei der Zusammenarbeit von Teammitgliedern während einer Paarungssitzung. Der/Die Autor(in) kann während der Überprüfung kleine Änderungen vornehmen und größere Korrekturen für einen späteren Zeitpunkt notieren.

Die Vorteile des Over-the-Shoulder-Review

  • Einfache Implementierung und Fertigstellung
  • Remote-fähig
  • Schneller als die Paarprogrammierung

Die Nachteile des Over-the-Shoulder-Review

  • Prüfer(in) ist vom Code losgelöst
  • Überprüfung orientiert sich am Tempo des Autors/der Autorin
  • Mangelnde Objektivität
  • Keine Überprüfung, ob Änderungen vorgenommen wurden
  • Schwer zu messen

Toolgestützte Reviews

Teams können sich entscheiden, Tools zu verwenden, um Zeit zu sparen und sicherzustellen, dass nur Code von höchster Qualität geliefert wird. Toolgestützte Reviews können geänderte Dateien automatisch erfassen und die Unterschiede anzeigen, oder sie erleichtern das Feedback und den Austausch über Kommentare und integrieren Dinge wie statische Anwendungssicherheitstests (SAST), um Sicherheitslücken zu identifizieren und zu beheben.

Am besten betrachtest du toolgestützte Reviews als Ergänzung zu anderen Arten von Reviews. Automatisierte Tools sind ein effektiver Weg, um Codestandards durchzusetzen, Sicherheitslücken zu erkennen, Metriken zu sammeln und Dateien zu erfassen. Manche Teams sind jedoch versucht, sich vollständig auf Tools zu verlassen und auf die Beteiligung der Teammitglieder bei der Durchführung von Code Reviews zu verzichten. Tools sollten als Ergänzung zu Code Reviews betrachtet werden, um den Prozess zu verbessern.

Die Vorteile toolgestützter Reviews

  • Einfacher zu erfassende Metriken
  • Automatisierte Tools ermöglichen es Entwickler(inne)n, sich auf ihre Arbeit zu konzentrieren

Die Nachteile von toolgestützten Reviews

  • Entwickler müssen Tools pflegen
  • Kostenintensiv
  • Erfordert immer noch Reviews von Teammitgliedern

E-Mail für Code Review

E-Mails für Code Review werden oft für kleinere Schwierigkeiten und kleine Codestücke verwendet. Sie können per E-Mail oder über Quellcodeverwaltungssysteme durchgeführt werden. Während einer E-Mail für Code Review sendet ein(e) Autor(in) eine E-Mail mit Codeänderungen an Prüfer(innen). E-Mail für Code Review ähnelt den Over-the-Shoulder-Reviews, da sie einfach implementiert werden können und keine starke Lernkurve oder Mentoring-Phase erfordern, um den Autor(innen) beizubringen, wie man eine Änderung vornimmt.

Die Vorteile von E-Mail für Code Review

  • Einfache Implementierung und Fertigstellung
  • Ermöglicht asynchrone Remote-Reviews
  • Automatische Überprüfungen über SCMS

Die Nachteile von E-Mail-Pass-Arounds

  • Zeitaufwendiges Sammeln von Dateien
  • Gespräche schwer zu folgen
  • Kein definiertes Enddatum der Überprüfung
  • Keine Überprüfung, ob Änderungen vorgenommen wurden
  • Schwer zu messen

Einige Best Practices für Code Reviews

  • Begrenze Code-Review-Sitzungen, damit sie produktiv bleiben. Finde heraus, was für dein Team optimal ist – zum Beispiel nicht mehr als eine Stunde oder 200 Zeilen Code – und ermutige es, sich an diese Begrenzung zu halten.
  • Beziehe alle – auch neue und ältere Teammitglieder – in den Prozess ein. Code Reviews sind eine hervorragende Möglichkeit, um neuen Teammitgliedern dabei zu helfen, sich mit der Codebase vertraut zu machen – sowohl durch die Überprüfung des Codes erfahrener Entwickler(innen) als auch durch die Bewertung ihres Codes durch erfahrenere Entwickler(innen). Wenn alle in den Code-Review-Prozess eingebunden werden, ist es auch einfacher, den Prozess anzupassen, wenn jemand Urlaub macht oder das Team verlässt.
  • Verteile Code-Review-Anfragen im Team. Es kann leicht passieren, dass einige wenige Entwickler(innen) den Großteil der Code-Review-Anfragen bekommen, und das ist weder für sie noch für den Rest des Teams – oder die Codebase – langfristig gesehen gut. Um dies zu vermeiden, kannst du eine Liste von Domain-Expert(inn)en erstellen oder ein Reviewer-Roulette durchführen.
  • Stelle Fragen und biete hilfreichen Kontext. Wenn du den Code von jemandem überprüfst, tue dein Bestes, damit ihr beide während des Prozesses dazulernt. Du bist dir nicht sicher, warum jemand etwas anders gemacht hat, als du es vielleicht getan hättest? Frag nach. Hast du einen Vorschlag, wie man den Code der anderen Person verbessern kann? Vergiss nicht, in deinem Kommentar zu erklären, warum du eine Änderung vorschlägst. Dadurch lernt ihr nicht nur beide dazu, sondern spart auch Zeit.

Fazit

Durch die Integration effektiver Code-Review-Praktiken in die Softwareentwicklung können Unternehmen die Herausforderungen kurzer Fristen meistern, ohne die Integrität ihrer Produkte zu gefährden. Der Dialog zwischen Code-Autor(in) und Code-Prüfer(in) legt den Grundstein für einen robusten Entwicklungsprozess, der sicherstellt, dass jeder Code nicht nur die festgelegten Standards erfüllt, sondern sie übertrifft.

Code Reviews sind der Weg in eine Zukunft, in der Innovation, Zusammenarbeit und Sicherheit den Weg zur Entwicklung wirkungsvoller Softwarelösungen ebnen.

Entdecke, wie GitLab den Code-Review-Prozess optimiert

GitLab optimiert die Softwareentwicklung mit umfassender Versionskontrolle und Zusammenarbeit.

Bist du bereit?

Sieh dir an, was dein Team mit einer einheitlichen DevSecOps-Plattform erreichen könnte.