Code-Review mit Künstlicher Intelligenz CodeRabbit.ai unterstützt Pull Requests auf GitHub

Von Mirco Lang 5 min Lesedauer

Anbieter zum Thema

Code Reviews und Diskussionen über Pull Requests gehören nicht zu den Lieblingsbeschäftigungen von Entwicklern. CodeRabbit schickt sich an, dieses Dilemma mithilfe von Künstlicher Intelligenz zu lösen.

Der CodeRabbit-Flow im Überblick.(Bild:  CodeRabbit.ai)
Der CodeRabbit-Flow im Überblick.
(Bild: CodeRabbit.ai)

Künstliche Intelligenz (KI) wird mal als Bedrohung für die eigene Tätigkeit angesehen, mal als wertvolles Hilfsmittel. Kleinere Skripte und Funktionen lassen sich einigermaßen reibungslos über etliche AI-Tools realisieren und auch im beliebten Visual Studio Code werden die meisten Entwickler und Entwicklerinnen die neuen Helferlein nutzen, um kleineren Fehlern direkt auf die Spur zu kommen.

KI reduziert hier definitiv den zeitlichen Aufwand, nicht immer zur Freude enthusiastischer Coder. Allerdings sind die Zeiten, da Entwickler fast ausschließlich Code produzieren, ohnehin längst vorbei. Vielerorts gilt es, auch weniger beliebte Dinge zu erledigen – zum Beispiel Code Reviews für Pull Requests samt der zugehörigen Dokumentation und Diskussion. Und nach dem eigentlichen Code zielen KI-Werkzeuge auch immer öfter in diesen Bereich.

Ein schlankes, gut integriertes Beispiel dafür ist CodeRabbit.a. Der KI-basierte Reviewer arbeitet sowohl in GitHub als auch GitLab und ist in vier Versionen erhältlich. Die eingeschränkte, kostenlose Free-Variante beschränkt sich auf Zusammenfassungen und Reviews von Pull Requests; letztere allerdings nur für öffentliche Repositories.

In der Pro-Version gibt es für 12 USD monatlich ausführlichere Reviews, Reports und vor allem einen interaktiven Bot. Besonders interessant dürfte sein, dass die Pro-Version für Open-Source-Projekte kostenlos zur Verfügung steht. Hinzu kommen individuelle Pläne, die neben Support auch eine Self-Hosting-Option beinhalten können.

Die grundsätzliche Arbeitsweise von CodeRabbit.ai ist recht simpel: Der Service wird als App zum Beispiel in GitHub eingebunden, bekommt Leserechte für die gewünschten Repositories und/oder Organisationen und liest fortan bei Pull Requests und zugehörigen Commits und Issues mit. Die Aktionen des Bots finden entsprechend über die Kommentare zu den Pull Requests statt.

Auf CodeRabbit.ai selbst gibt es zusätzlich eine recht schlanke Weboberfläche. Hier finden sich Dashboards, Reports, API-Referenz, Dokumentation und organisationsweite Einstellungen. Die API-Referenz beschränkt sich derzeit allerdings noch auf eine einzige Funktion zum Generieren von Reports. Auch die Dokumentation liefert nur ein paar spärliche Hinweise. In den Einstellungen gibt es einzig im Bereich „Review/Tools“ allerhand Optionen.

Hier lassen sich beispielsweise das Analysewerkzeug AST Grep, der Go-Linter golangci-lint, der PHP-Analytiker PHPStan und einige weitere Helferlein konfigurieren. Erfreulich an dieser Stelle: Auch ein YAML-Linter ist standardmäßig aktiv, was bei einem derart pingeligen Format auch vonnöten ist. Zudem lässt sich auch CodeRabbit.ai per YAML konfigurieren, dazu gleich mehr.

Freilich lernt der Code-Hase auch und baut eine lokale Wissensbasis auf, auf Wunsch auch rein auf Basis der Organisation oder einzelner Repos. Zu guter Letzt noch das fast schon Selbstverständliche: Es gibt eine Jira-Integration, um dem Bot verlinkte Issues als Kontext bereitzustellen. Soweit zur Theorie, etwas greifbarer wird es mit einem kurzen Walkthrough.

CodeRabbit.ai auf GitHub

Die Einrichtung ist simpel. Nach der Anmeldung auf CodeRabbit.ai via GitHub-Account wird man direkt durch die Installation der App für die gewünschten Repositories geführt. Zum Testen durfte hier ein reichlich sinnloser Commit dienen, der ein paar CLI-Kommandos (grep und curl) in ein AutoHotkey-Skript einführen sollte, samt eines entsprechenden Kommentars.

Erste CodeRabbit.ai-Meldung: Bitte warten!(Bild:  Lang / CodeRabbit.ai)
Erste CodeRabbit.ai-Meldung: Bitte warten!
(Bild: Lang / CodeRabbit.ai)

Sobald der Pull Request steht, meldet sich CodeRabbit.ai – allerdings mit etwas Verzögerung. Wer die App testet, sollte ihr immer ein wenig Zeit gönnen, denn Antworten dauern schon mal 20, 30 Sekunden und mehr. Auch die Art des ersten Kommentars ist zum Einstieg gewöhnungsbedürftig: Der Hase liefert zunächst einen Kommentar, dass ein Review im Gange ist, und man etwas warten möge – und editiert diesen Kommentar dann.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Zusammenfassung plus Gedicht, macht ein Entwickler häufig nicht.(Bild:  Lang / CodeRabbit.ai)
Zusammenfassung plus Gedicht, macht ein Entwickler häufig nicht.
(Bild: Lang / CodeRabbit.ai)

Ein wenig später kommt dann die Zusammenfassung für alle veränderten Dateien, alle Commits im Pull-Request. Die Zusammenfassungen von Änderungen ist hier bei Testdurchläufen jeweils einfach gehalten und korrekt. Die Zusammenfassung des gesamten Pull-Requests ist deutlich weniger präzise, allerdings auch nicht wirklich falsch – so wie man KI-Antworten seit jeher eben kennt. Und natürlich darf dann auch ein Gedicht nicht fehlen.

Für weitere Infos und Rückfragen lässt sich der Bot nun entweder direkt ansprechen (via @coderabbitai) oder man antwortet schlicht auf einen Kommentar. Spannender wird es dann auch bei der Analyse.

Analyse der eingereichten Änderungen.(Bild:  Lang / CodeRabbit.ai)
Analyse der eingereichten Änderungen.
(Bild: Lang / CodeRabbit.ai)

Nach der Rückfrage bemerkt CodeRabbit.ai, dass curl- und grep-Kommandos so natürlich nicht in einem AutoHotkey-Skript funktionieren können. Die Darstellung ist übersichtlich, der Inhalt hilfreich und mit ein wenig mehr Kontext (auch durch längere Nutzung) dürften sich so tatsächlich viele Pull-Request-Analysen deutlich beschleunigen lassen. Eher triviale Erklärungen wie in diesem Beispiel werden sich Entwickler und sonstige CodeRabbit.ai-Nutzerinnen in Zukunft wohl sparen dürfen.

Korrekter, gut erklärter Code.(Bild:  Lang / CodeRabbit.ai)
Korrekter, gut erklärter Code.
(Bild: Lang / CodeRabbit.ai)

Nun kann der Bot nicht nur analysieren und erklären, sondern auch bei Änderungen helfen. Hier sollte er zum Beispiel erklären, wie sich denn das curl-Kommando aus einem AutoHotkey-Skript aufrufen ließe. Ergebnis: Korrekter Code, exakt und ausführlich erklärt!

Über ein paar wenige direkte Befehle gibt es eine weitere Möglichkeit, mit dem CodeRabbit-Bot zu interagieren. Zum Beispiel dient …

@coderabbitai pause

… zum Pausieren von Pull-Request-Reviews, während mit …

@coderabbitai full review

… der komplette Review neu startet. Befehle werden schlicht als Kommentar zum Pull-Request abgesetzt.

Wie oben erwähnt, gibt es auch die Möglichkeit, CodeRabbit.ai für einzelne Repos per YAML zu konfigurieren. Über den Befehl …

@coderabbitai configuration

… wird die aktuelle Konfiguration direkt als YAML ausgegeben. Diese kann dann verändert und im Repo-Basisverzeichnis als „.coderabbit.yaml“ gespeichert werden. Hier die ersten Zeilen:

language: en-US
tone_instructions: 'Talk like a'
early_access: false
enable_free_tier: true
reviews:
  profile: chill
  request_changes_workflow: false
  high_level_summary: true

Wen schon das Gedicht verwundert haben mag: Über die Einstellung „tone_instruction“ lässt sich dem Bot mitteilen, in welchem Stil er kommentieren soll – das offizielle Beispiel verweist zum Beispiel auf Mr. T. Das ist übrigens gar nicht so unüblich, auch die KI-Bot-Schmiede Botpress, zu der wir auch eine kleine Serie haben], erlaubt es, dem Bot eine Art Grundstimmung mitzugeben.

Das mag nach Spielerei klingen, allerdings kann es durchaus hilfreich sein, wenn der Bot ebenso mit Emojis und Nerd-Humor um sich wirft, wie es viele menschliche GitHub-User in ihren Pull-Requests tun. Auch das oben erwähnte Commit-Gedicht, so unnütz es scheinen mag, sorgt für eine bessere Arbeitsatmosphäre.

CodeRabbit.ai ist erst 2023 gegründet worden – und das sieht man noch an etlichen Stellen. Die Dokumentation ist dünn, Integrationen beschränken sich auf Jira und Linear, die API scheint noch eher eine Demo. Inhaltlich liefert der Bot aber schon jetzt, und im Testbetrieb freilich ohne große Lernmöglichkeiten, ordentliche Ergebnisse – im Bereich dessen, was man auch von anderen Bots gewohnt ist.

Die Integration in den GitHub-Workflow ist allerdings schon jetzt sehr gut, die Nutzung ist denkbar simpel und für viele Projekte dürfte ein solches Tool vor allem eines bedeuten: Es könnte Dokumentation und Transparenz dort geben, wo bislang gar nichts war. Auch könnte es helfen, überhaupt erst Pull-Requests von Dritten zu bekommen, denn diese könnten sich eine Menge Arbeit sparen. Aber es bleibt ein Helferlein, das lästige Arbeiten verkürzt und sicherlich niemanden den Job kosten wird.

(ID:50082086)