In diesem Artikel konzentrieren wir uns auf die Verbesserung des Workflows durch Code-Reviews mithilfe von GitLab-Merge-Requests. Außerdem besprechen wir die besten Code-Review-Praktiken, die wir bei Yalantis anwenden. Zunächst gehen wir jedoch auf die möglichen Folgen ein, wenn Sie diesen wichtigen Schritt ignorieren.

Entwickler im Team

Die Projekte, an denen unser Unternehmen arbeitet, erfordern in der Regel einen bis drei Entwickler pro Plattform. Und fast jedes Entwicklungsteam umfasst Mitarbeiter mit unterschiedlichen Kompetenzstufen (Entwickler werden in der Regel als Junior-, Middle- und Senior-Entwickler eingestuft).

Allerdings schreiben alle Programmierer unabhängig von ihrem Niveau Software unterschiedlich. Insbesondere mobile App-Entwickler, die tendenziell kreative Menschen sind, haben Schwierigkeiten, den Code ihrer Kollegen zu verstehen. Dieses Problem kann auch auf fehlendes Wissen, Schlaf, Kaffee oder übermäßige Kreativität zurückzuführen sein.

Wie können wir sicherstellen, dass Entwickler die Codebeispiele der anderen lesen können? Das Durchsuchen von Quellcodes ist ein guter Anfang!

Warum Code überprüfen?

Viele Entwickler schreiben Code so, als wären sie die Einzigen, die ihn jemals verstehen müssen. Das ist kein Problem, wenn ein Entwickler ein Produkt selbst entwickelt.

Doch eine solche Welt der friedlichen Einsamkeit existiert nicht. Die Realität ist, dass Entwickler überlegen müssen, wer ihre Arbeit übernehmen wird. Sie müssen auch über die Kunden nachdenken, die Geld und Zeit aufwenden müssen, um die Geheimnisse zu lüften, die in unklaren Codezeilen verborgen liegen. Hier sind einige Gründe für eine Code-Review:

  • Kein Mitglied eines Teams hat ein vollständiges Bild von allen Codeinhalten eines Projekts, da dieses von verschiedenen Personen geschrieben wurde.
  • Einige Code-Teile in einem Projekt werden nur vom Autor gesehen werden, egal wie hart es auch andere versuchen.
  • Code mit schlechter Qualität wird wahrscheinlich noch lange, wenn nicht sogar für immer, in diesem Zustand bleiben.
  • Niemand ist für die Codebasis anderer verantwortlich – und manchmal gar nicht einmal für seine eigene.
  • Mitglieder des Teams haben Schwierigkeiten, Erfahrungen zu sammeln und ihre Programmierkenntnisse zu verbessern.
  • Schlechtes Code wird in der Testphase zu einer Qual.
  • Schlechtes Code führt zu Problemen. Schließlich ergeben sich viele Schwierigkeiten bei der Erkennung und Behebung von Problemen.
  • Wenn ein neuer Entwickler an einem Projekt beteiligt wird, kann sein Code die größte Gefahr darstellen, die Ihre Software jemals erlebt hat.
  • Es kann sehr kompliziert sein, nach drei Monaten der Entwicklung von Code, der außer Kontrolle geraten ist und sein eigenes Dasein führt, eine Umstrukturierung durchzuführen.

Wie Sie sehen können, sind die Aussichten nicht besonders günstig, wenn Sie die Code-Überprüfung vernachlässigen. Aber eine Code-Überprüfung allein kann nicht für eine hohe Codequalität sorgen. Zunächst einmal sollte der Code die Testphase bestehen.

Tests zur Verbesserung der Codequalität

Der Code-Review kann die gründliche Testabdeckung nicht ersetzen und die Qualität des Codes vollständig verbessern. Vor dem Code-Review sollte der neue Code über ausreichende Testabdeckung verfügen. Bei jedem Push führen GitLab-Pipelines Tests und Code-Qualitätsprüfungen durch, damit ein Entwickler Probleme beheben kann.

Obwohl Code-Reviews manchmal hilfreich bei der Erkennung von Fehlern sein können, sind sie nicht das primäre Werkzeug für diesen Zweck. Eine solide Sammlung von Einheits-, Funktions- und Integrationstests sowie Code-Qualitätswerkzeuge wird diesen Zweck effektiv erfüllen.

Aber es besteht immer die Möglichkeit, dass ein Fehler nicht von irgendeinem Test erkannt wird, und genau hier sind Code-Reviews entscheidend. Unzureichende Tests können auch Unsicherheiten hinsichtlich der Geschäftslogik des Codes (d. h. dessen Einhaltung der ursprünglichen Anforderungen) erzeugen. Und genau hier kommt ein guter Code-Reviewer ins Spiel.

Während Code geschrieben wird, ist es wichtig sicherzustellen, dass alle Tests automatisiert durchgeführt und explizit ausgeführt werden, wenn neuer Code gepusht wird. Ein Code-Reviewer erkennt, wann GitLab die Tests für einen neuen Code abgeschlossen hat und wann dieser Code kompiliert wird.

Die Ergebnisse automatisierter Tests sind für Entwickler deutlich sichtbar. Der erfolgreiche Abschluss des Testprozesses ist ein obligatorischer Schritt vor der Zusammenführung.

Allgemeine Prinzipien des Code-Reviews

  • Der Code-Review ist ein integraler Bestandteil jedes Entwicklungsprozesses.
  • Der Code-Review erfolgt über kleine, logisch zusammenhängende Teile des Codes, wie beispielsweise eine Funktion, eine Aufgabe, eine Fehlerbehebung oder eine Verbesserung.
  • Nur Code, der der Überprüfung standhält, wird zur Testung gesendet.
  • Alle Entwickler im Projekt nehmen an der Code-Überprüfung teil, unabhängig von ihrem Erfahrungslevel (jüngere Entwickler sollten auch den Code von mittleren und erfahrenen Spezialisten überprüfen).
  • Der Code aller Entwickler sollte unabhängig von deren Kompetenz überprüft werden.

Nun kommen wir zu den Werkzeugen. GitLab Angebote für Code-Überprüfung.

GitLab-Fusionsanforderung als Werkzeug für Code-Überprüfung

Ein Merge-Request dient dazu, Code von einem Zweig in einen anderen zu verschmelzen. Die wichtigsten Parameter eines Merge-Requests (die beim Erstellen eines Merge-Requests angegeben werden) sind:

  • Quellverzweigung
  • Zielzweig
  • Titel
  • Beschreibung
  • Übertragender

Verlauf der Aktionen bei der Bearbeitung von Zusammenfügungsanfragen

  1. Code schreiben und ihn in einen separaten Branch verschieben.
  2. Erstellen Sie einen Zusammenfüge-Anspruch für den Hauptentwicklungszweig. Der Adressat und alle Personen, die im Feld „Beschreibung“ und in den Kommentaren erwähnt werden, werden per E-Mail über den erstellten Zusammenfüge-Anspruch informiert. Um einen Entwickler anzugeben, geben Sie im Feld „Beschreibung“ das @-Symbol ein.
  3. Warten Sie, bis Ihre Anfrage akzeptiert oder abgelehnt wird und Sie dazu Kommentare zu den notwendigen Korrekturen erhalten.
  4. Teilnahme an Diskussionen über Fixes. (Mit GitLab können Sie auf Kommentare antworten.)
  5. Korrigieren Sie die Fehler.
  6. Veröffentlichen Sie die Änderungen in Ihrem Branch.
  7. Eröffnen Sie eine neue Zusammenfügungsanforderung, wenn die letzte geschlossen wurde. Wenn die Zusammenfügungsanforderung nicht geschlossen wurde, wird sie automatisch aktualisiert, bis der letzte Commit beim Push vorgenommen wird.
  8. Der Bericht implementierte die behobenen Probleme, indem er die Zusammenfügeanfrage kommentierte oder auf andere Weise (per Messenger oder direkt).

Fehler 500. Was tun, wenn eine GitLab-Fusionsanforderung nicht funktioniert?

Wenn ein Entwickler versucht, eine Zusammenführung zu erstellen, kann GitLab den Fehlercode 500 zurückgeben. Dies bedeutet, dass der GitLab-Server nicht richtig konfiguriert ist. Um dieses Problem zu lösen, benötigen Sie Hilfe von Ihrem Systemadministrator (oder zumindest von jemandem, der in Ihrer Entwicklergruppe die Rolle des Systemmanagers übernimmt).

Es kann viele verschiedene Gründe dafür geben, warum die Fehlermeldung 500 angezeigt wird. Es gibt keine universelle Lösung für dieses Problem. In den meisten Fällen können Sie dieses Problem jedoch auf eine der zwei folgenden Arten beheben (oder indem Sie beide Methoden gleichzeitig ausprobieren):

1) Legen Sie einen höheren Wert als den Standard für Parameter wie max_size und timeout fest. Der Parameter max_size legt die maximale Größe eines GitLab-Repositories fest. Timeout ist die Antwortzeit. Wenn während dieses Zeitraums keine Daten zurückgegeben werden, wird Fehler 500 angezeigt. Timeout ist auch die maximale Zeit für die Beendigung einer Zusammenfügeanforderung.

Wie wir dieses Problem gelöst haben:

grep cryptspirit config/* -r

config/gitlab.yml: max_size: 104857600 # 100 Megabyte cryptspirit

config/gitlab.yml: timeout: 20 # cryptspirit

 

2) Löschen Sie das Repository der GitLab-Satelliten und starten Sie sie erneut.

Reinigen —>

rm -rf /home/git/gitlab-satellites/{repo}

Neu generieren —>

Der letzte Befehl sollte im GitLab-Verzeichnis mit der konfigurierten Gem-Set ausgeführt werden. Ich hoffe, das hilft!

Wer eine Zusammenführung anfordern soll

Die Vergabe von Zusammenfügen hängt von verschiedenen Faktoren ab. Es können verschiedene Optionen bestehen, abhängig von der Anzahl der Personen im Projekt und deren Kompetenzniveau. Wenn Sie der einzige Entwickler in der Gruppe sind, vergeben Sie eine Zusammenfügen-Anforderung an sich selbst. Schließlich können Sie Fehler in Ihrem eigenen Code entdecken, wenn Sie versuchen. Wer sucht, findet immer!

Andernfalls können Sie mit einem anderen Entwickler sprechen, der ebenfalls auf eigene Faust arbeitet, und ihm vorschlagen, dessen Code zu überprüfen. Eine Dokumentenüberprüfung ist oft ebenfalls erforderlich, um sicherzustellen, dass andere Entwickler mit Ihrem Code arbeiten können.

Wenn es zwei Entwickler im Projekt gibt, können Sie die Zusammenfügeanforderungen untereinander verteilen. Wenn es drei oder mehr Entwickler gibt, können Sie selbst entscheiden:

  • Vergeben von Zusammenfügeanforderungen aneinander im Wechsel
  • Finden Sie zwei Entwickler, die von Merge-Anfragen begeistert sind und all ihre Anfragen an sie delegieren.
  • Alle Anfragen an einen einzelnen Entwickler delegieren und jeden Tag einen Code-Review mit allen Mitgliedern des Teams durchführen
  • Jede andere Option

Sie können eine Code-Überprüfung am Anfang und am Ende des Arbeitstages oder jederzeit auf Anfrage durchführen. Das Team kann entscheiden, wann eine Code-Überprüfung sinnvoll ist. Das Wichtigste ist, eine kontinuierliche Zusammenarbeit innerhalb des Teams zu gewährleisten. Wie Sie eine Code-Überprüfung durchführen, hängt direkt von den Praktiken ab, die in Ihrem Unternehmen angewendet werden.

Lesen Sie auch: Einheitstests für Web-Software: Warum sie notwendig sind und welche Frameworks verwendet werden können

Wenn Sie eine kontinuierliche Code-Überprüfung durchführen, stellen Sie sicher, dass:

  • Probleme im Code werden sofort erkannt und behoben
  • Jeder Mitglied des Teams, nicht nur der Autor des Codes, ist für die Qualität verantwortlich.
  • Der Wissensaustausch findet schnell und effizient statt
  • Junge Entwickler lernen schnell
  • Nur guter Code geht in die Testphase.
  • Schlechtes Codeobjekt wird nicht akkumuliert
  • Der Code eines neuen Entwicklers gefährdet nicht die allgemeine Codequalität.
  • Entwickler kennen nicht nur ihren eigenen Code, sondern auch den Code des gesamten Projekts.
  • Das fertige Produkt ist von hoher Qualität.

Weitere Informationen finden Sie in diesem Video. Video Probleme, Zusammenfügeanfragen und Integrationen in GitLab beschreiben.

Einige Unternehmen nutzen eine Code-Review-App und -Tools, doch beachten Sie, dass Code-Review-Apps ihre Grenzen haben.

Best Practices für Code-Review bei Yalantis

Um die Zeit für die Überprüfung jeder Zusammenführungserteilung zu minimieren, müssen Sie eine Strategie für die Codeüberprüfung haben.

Unser bescheidenes Urteil: Ein guter Entwickler ist nicht nur jemand, der einen Programmierablauf befolgt und qualitativ hochwertige Code schreibt. Ein guter Entwickler weiß, wie man Code zur Überprüfung bereitstellt und den gesamten Code-Überprüfungsprozess für den Prüfer unkompliziert macht.

Um den Code-Review-Workflow zu verbessern, folgen wir einer einheitlichen Strategie für die Arbeit mit Git – dem weit verbreiteten Gitflow-Workflow.

Der Gitflow-Workflow ist ein striktes Verzweigungsmodell, das speziell für ein bestimmtes Projekt konzipiert wurde. Es hilft, Dinge wie die Namen der Branches, die Struktur der Commit-Nachrichten, die Kommunikation zwischen Reviewern und Reviewee sowie viele andere Projektdetails zu vereinheitlichen.

Neben dem Einhaltung eines solchen Workflows sollten Sie außerdem bedenken, dass ein guter Zusammenfügeantrag eine bestimmte Aufgabe lösen sollte. Wir empfehlen, in einem Zusammenfügeantrag nicht mehr als eine Funktion einzubeziehen. Es wäre viel besser, wenn Sie stattdessen mehrere Zusammenfügeanträge erstellen würden.

Als Reviewer sollten Sie nicht zögern, den Quellcode selbst testen und die eingehenden Änderungen testen, insbesondere wenn der Merge-Anforderung viele Änderungen enthalten sind. Erstellen Sie das Projekt und prüfen Sie, ob alles wie erwartet funktioniert.

Außerdem ist eine wichtige Eigenschaft unserer Checkliste für Code-Überprüfungen die Löschung von Zweigen, wenn diese nicht mehr benötigt werden. Die Verantwortung für die Löschung von Zweigen nach deren vollständigen Zusammenfügen liegt beim Prüfer.

Als Reviewer können Sie jedoch das Leben Ihrer Kollegen vereinfachen, indem Sie das Kontrollkästchen aktivieren, um den Quell-Branch zu löschen, wenn der Zusammenfügeantrag akzeptiert wird. So wird der Quell-Branch automatisch gelöscht, sobald der Zusammenfügeantrag akzeptiert wird.

Wie Sie sehen können, ist eine Code-Überprüfung ein praktisches Werkzeug, um die Entwicklung so effizient wie möglich zu gestalten. Eine Code-Überprüfung ist ein wesentlicher Bestandteil der App-Entwicklung und ermöglicht stabile Software, genaue Qualitätsmessung und Analyse.

Praktische Anwendung von Code-Review für Unternehmen

Als entscheidender Bestandteil von QA und Software-Engineering bietet Code Review wesentliche Vorteile für die Zusammenarbeit zwischen dem Kunden und dem Software-Entwicklungspartner und verbessert somit die Qualität des Endprodukts.

  • Teamengagement Ein ganz neues Niveau erreicht man, da jedes Mitglied am Entwicklungsprozess beteiligt ist. Ingenieure werden nicht nur in die Funktionen eingebunden, an denen sie arbeiten, sondern erhalten auch einen umfassenderen Überblick über das Produkt. Auf diese Weise entsteht ein Wachstum der Proaktivität des Teams und eine aktive Wissensvermittlung.
  • Der Entwicklungsprozess gewinnt an Kontinuität und Geschwindigkeit. Das bedeutet, dass, falls ein Ingenieur in den Urlaub geht oder aus irgendeinem Grund ersetzt werden muss, fast jeder Teammitglied den Platz des anderen übernehmen kann. Diese Art der Zusammenarbeit eliminiert das Risiko, Termine zu verpassen, und trägt zur Kontinuität des Entwicklungsprozesses bei.
  • Möglichkeiten zur Erweiterung des Teams und zur Produktentwicklung. Mit Code-Review kann ein standardisiertes Entwicklungskonzept erreicht werden, was es einfach und schnell macht, neue Teammitglieder einzubinden, wenn das Produkt wächst und die Größe des Teams erhöht werden muss.
  • Verbesserte Produktqualität und erhöhte Kundenzufriedenheit. Da mehr technische Talente in die Codeentwicklung einbezogen werden, wird das Auffinden von Fehlern einfacher, und es besteht eine höhere Wahrscheinlichkeit, dass etwaige kleinere Fehler vor der Serienproduktion entdeckt und behoben werden. Solche Produkte werden wahrscheinlich positive Rückmeldungen und Bewertungen in den Geschäften erhalten.
  • Optimierte Entwicklungskosten. Wenn Code-Review Teil des Entwicklungsprozesses wird, investiert ein Product Owner auch in die Entwicklung junger technischer Talente und kann keine Angst mehr vor der Einstellung von Junior-Spezialisten haben, um das Team aus Mittelfachleuten und Senior-Ingenieuren zu vervollständigen. Die Qualität des Endprodukts bleibt hoch, da alle Code-Versionen von erfahrenen Kollegen überprüft werden. Auf diese Weise werden junge Talente schnell lernen und bleiben oft jahrelang loyal gegenüber dem Produkt.

Der Code-Review war ein unersetzlicher Teil der enormen Arbeit, die wir für Gesundheitsförderlich, einem Anbieter von Unternehmensgesundheitslösungen sowie anderen Projekten kleinerer Größenordnung.

Abschließend möchten wir bekräftigen, dass Code-Review eine einfache und effektive Methode ist, um bessere Ergebnisse bei der Outsourcing-Softwareentwicklung zu erzielen. Code-Review ist ein wesentlicher Bestandteil unserer Arbeit. SDLC und eine Praxis, die uns dabei hilft, qualitativ hochwertige Produkte zu entwickeln und die kontinuierliche Verbesserung unserer technologischen Talente zu gewährleisten.

Suchen Sie einen zuverlässigen Softwareentwicklungspartner?

App-Entwicklung, einschließlich Reengineering und Support

Alles wird einfacher mit Yalantis

Über den Autor

Foto von Nataliia Horbei

Inhaltmanager

Mit mehr als sechs Jahren Erfahrung in der Softwareentwicklung konzentriert sich Nataliia auf die Erstellung eingehender Inhalte zu Themen wie Web- und Mobile-Entwicklung, IoT, KI/ML und Cloud-Lösungen. Ihre Arbeit umfasst mehrere Branchen, von der Gesundheitsversorgung und Fintech über Logistik und Immobilienwirtschaft bis hin zu Finanzdienstleistungen.