Blog-Logo auf schwarzem Grund mit dem Schriftzug "Discover What's Next in Tech!"

Pull Request Reviews: Wie KI die Codequalität verbessert und Zeit spart

,

PR Reviews sind unerlässlich für die Sicherstellung der Codequalität. Doch oft sind sie zeitaufwendig und anfällig für Fehler. Tools wie GitHub Copilot helfen bereits beim Erstellen von Code – warum also nicht auch beim Review? Durch LLMs können Routineaufgaben automatisiert und Probleme frühzeitig erkannt werden. Dies verbessert nicht nur die Qualität, sondern spart auch wertvolle Zeit.

Verfügbare Tools für KI-gestützte Pull Request Reviews

Zum Thema wurde bereits z.B. bei Google geforscht und vielversprechende Ergebnisse zur Lösung von Code-Review-Kommentaren mit maschinellem Lernen veröffentlicht Google Research. Dies bezieht sich allerdings auf die internen Tools von Google.

Für die Öffentlichkeit gibt es Lösungen für GitHub oder GitLab. Zwei davon sind:

Abgesehen von den Betriebsmodellen ähnelt sich die Funktionsweise der beiden Tools stark. CodeRabbit stellt es auf seiner Website folgendermaßen dar.

Vereinfacht gesagt wird der Pull Request ausgelesen und vorverarbeitet. Daraufhin wird der Pull Request an ein oder mehrere LLMs gesendet und ausgewertet. Das Ergebnis wird anschließen als Kommentar im Pull Request hinterlassen.

Im Folgenden werde ich hauptsächlich auf Codium AI PR-Agent eingehen, das es mit der Option das LLM selbst zur Verfügung zu stellen flexibler einsetzbar ist.

Beispiel: Code Reviews bei KeepTime

Genug Theorie, anhand des Zeittracking-Tools KeepTime habe ich zwei reale Pull Request nachgestellt.

Dann habe ich ein Review von Codium AI angefordert. Die originalen Pull Requests sind KeepTime #176 und KeepTime #173. Die entsprechenden nachgestellten Pull Requests finden sich hier.

Aufbau des Reviews

Ein Review mit Codium AI PR-Agent besteht aus drei Hauptteilen: dem „PR Reviewer Guide“, den „PR Code Suggestions“ und dem „Changes Walkthrough“.

Changes Walkthrough

Dieser Abschnitt gibt eine Übersicht über die relevanten Dateien und die vorgenommenen Änderungen. Hier ein Beispiel: Changes walkthrough

Relevant files
Enhancement14
Tests3
Dependencies1
Configuration Changes1

PR Reviewer Guide

Der „PR Reviewer Guide“ bietet eine detaillierte Anleitung für diejenige oder denjenigen Reviewer, einschließlich des geschätzten Aufwands und potenzieller Sicherheitsbedenken. Ein Beispiel:

⏱️ Estimated effort to review [1-5]4
🧪 Relevant testsyes
🔒 Security concerns– Sensitive Information Exposure:
The application properties include sensitive data like username and password. Ensure these are securely managed, potentially using environment variables or a secure vault solution. – SQL Injection: Verify that all database queries, especially those constructed with parameters, are using prepared statements or are otherwise protected against SQL injection.
⚡ Key issues to reviewPossible Bug:
The extractValue method in LoginController assumes the format of the input string is always correct. It should handle cases where the format might not match expectations to avoid StringIndexOutOfBoundsException.

Code Duplication:
There is noticeable duplication in DTO classes for setting and getting properties. Consider using Lombok to reduce boilerplate code.

Error Handling:
In ProjectController and WorksController, the exception handling is basic. It would be beneficial to add more specific error responses based on the caught exceptions to give clearer feedback to the client.

Validation:
Ensure that all necessary fields in DTOs are validated to prevent invalid data operations.

PR Code Suggestions

Dieser Teil bietet konkrete Verbesserungsvorschläge für den Code. Hier ein Beispiel:

CategorySuggestionScore
MaintainabilityConvert to parameterized tests to reduce duplication10
Refactor repeated code into a helper method8
Refactor not found response creation into a separate method for better maintainability7
Replace hardcoded property keys with static final strings7
Implement a Builder pattern for ProjectColorDTO to simplify object creation and improve code maintainability6
Refactor stream operations into a separate method to improve readability6
Best practiceRename test methods to be more descriptive9
Limit the scope of component scanning by specifying a base package8
Improve exception handling by using logging instead of printing stack trace8
Improve spacing for better readability7
Optimize data retrieval by using a specific query method instead of filtering in memory9
Use String.format for string concatenation to enhance readability and performance6
Possible bugAdd null check for newValuedWorkDTO to prevent NullPointerException9
Correct file path handling to prevent FileNotFoundException9
EnhancementAdd @Transactional annotation to ensure database consistency8
Use a constructor for initializing ColorDTO to enhance immutability and encapsulation7

Zu den meisten Verbesserungen gibt es auch Code-Vorschläge, die auch direkt angewendet werden können.

Fazit

KI-gestützte Tools wie CodeRabbit AI und Codium AI PR-Agent bieten eine wertvolle Unterstützung für Pull Request Reviews, indem sie Entwicklerinnen und Entwickler dabei unterstützen, sich auf kritische Code-Stellen zu konzentrieren, potenzielle Bugs aufzudecken und insgesamt Zeit zu sparen. Diese Tools automatisieren Routineaufgaben und identifizieren mögliche Probleme frühzeitig, was die Qualität der Code Reviews verbessern kann. Es ist jedoch wichtig zu beachten, dass KI-basierte Lösungen aktuell fachliche Themen möglicherweise nicht umfassend berücksichtigen können, da ihnen oft der spezifische Kontext fehlt.

In Zukunft könnte z.B. eine Integration mit einem Issue-Tracking-Tool wie Jira für den nötigen Kontext sorgen. Damit könnten nicht nur technische Aspekte, sondern auch die Fachlichkeit von Änderungen überprüft werden.

Ein weiterer Punkt für mögliche Weiterentwicklung wäre die Entwicklung einer eigenen Benutzeroberfläche für diese KI-gestützten Tools. Eine dedizierte UI könnte eine intuitive Interaktion ermöglichen.

Noch mehr Lust auf weiter Einsatzmöglichkeiten von KI-Technologien? Erfahren Sie mehr und kontaktieren Sie uns hier.

Simon Mennig

Über MICH

Simon Mennig hat Wirtschaftsinformatik (B.Sc.) an der Hochschule Ravensburg-Weingarten sowie Informatik mit Schwerpunkt Software Engineering (M.Sc.) an der HTWG in Konstanz studiert. Er arbeitet seit 2020 bei doubleSlash als Softwareentwickler und verfügt u.a. über Know-how in den Bereichen IoT, Cloud Computing und Java.

Alle Beiträge von Simon Mennig

Mehr erfahren

Weitere Infos auf unserer Website und in unserem Newsletter

Pfeil hoch