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:
- CodeRabbit AI: Dieses Tool lässt sich nur über die Cloud nutzen.
- Codium AI PR-Agent: Dieses Tool kann über die Cloud oder aber auch selbst betrieben werden (siehe Installation).

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 | |
|---|---|
| Enhancement | 14 |
| Tests | 3 |
| Dependencies | 1 |
| Configuration Changes | 1 |
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 tests | yes |
| 🔒 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 review | Possible 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:
| Category | Suggestion | Score |
|---|---|---|
| Maintainability | Convert to parameterized tests to reduce duplication | 10 |
| Refactor repeated code into a helper method | 8 | |
| Refactor not found response creation into a separate method for better maintainability | 7 | |
| Replace hardcoded property keys with static final strings | 7 | |
| Implement a Builder pattern for ProjectColorDTO to simplify object creation and improve code maintainability | 6 | |
| Refactor stream operations into a separate method to improve readability | 6 | |
| Best practice | Rename test methods to be more descriptive | 9 |
| Limit the scope of component scanning by specifying a base package | 8 | |
| Improve exception handling by using logging instead of printing stack trace | 8 | |
| Improve spacing for better readability | 7 | |
| Optimize data retrieval by using a specific query method instead of filtering in memory | 9 | |
| Use String.format for string concatenation to enhance readability and performance | 6 | |
| Possible bug | Add null check for newValuedWorkDTO to prevent NullPointerException | 9 |
| Correct file path handling to prevent FileNotFoundException | 9 | |
| Enhancement | Add @Transactional annotation to ensure database consistency | 8 |
| Use a constructor for initializing ColorDTO to enhance immutability and encapsulation | 7 |
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.



