Cookies 🍪

Diese Website verwendet Cookies, die eine Einwilligung erfordern. Mehr in der Datenschutzerklärung.

Zum Inhalt springen
Nordalux
Hey 👋
Wir sind für dich da

code-review-graph im Test: Blast Radius für Claude Code

| Tobias Graeger
Goldene Schockwelle breitet sich von einem Code-Block aus, Symbol für Blast-Radius-Analyse mit code-review-graph.
Dieses Bild wurde mit Hilfe
von generativer KI erstellt.

Fünf Monate auf GitHub, fast 20.000 Sterne: code-review-graph ist gerade das sichtbarste Tool in einer Kategorie, die wir hier schon zweimal durchgetestet haben. Es baut einen persistenten Knowledge Graph deiner Codebase und verspricht, dass dein KI-Agent bei Code-Reviews nur noch liest, was eine Änderung tatsächlich berührt. Blast Radius heißt das Konzept: Von jeder geänderten Datei aus verfolgt der Graph alle Aufrufer und abhängigen Module bis hin zu den Tests.

Nach unserem Duell Repowise gegen tokensave ist das der dritte Praxistest auf demselben Repo: unsere eigene Website, Statamic auf Laravel. Diesmal mit einer Besonderheit. code-review-graph wirbt ausdrücklich mit Laravel-Unterstützung, mit Blade-Templates, Routen-Auflösung und Eloquent-Kanten. Genau das können wir nachprüfen.

Was code-review-graph ist

Ein Python-CLI unter MIT-Lizenz, local-first: Der Graph entsteht und bleibt auf deinem Rechner. Tree-sitter parst über 30 Sprachen in eine SQLite-Datenbank aus Funktionen, Klassen, Imports, Aufrufen und Test-Verknüpfungen. Dein KI-Agent fragt den Graph per MCP ab, und der Installer konfiguriert auf Wunsch 14 Plattformen auf einmal, von Claude Code über Codex und Cursor bis GitHub Copilot. Dazu kommt eine GitHub Action, die auf jedem Pull Request einen risikobewerteten Review-Kommentar postet. Auch die läuft komplett auf dem CI-Runner, ohne dass Quellcode das eigene System verlässt.

Bemerkenswert ist die Benchmark-Doku. Das README nennt eine mediane Token-Reduktion von 82x über sechs Test-Repos und stellt im selben Absatz klar, dass die oft zitierten 528x der Best Case eines einzelnen Repos sind. Sogar dass der eigene formale Token-Benchmark bei kleinen Commits Werte unter 1 liefert, die Graph-Antwort dann also mehr kostet als der Diff selbst, steht offen in der Doku. Diese Transparenz ist in der Kategorie selten. Und sie wird gleich noch wichtig.

Installation und erster Build

Die Installation lief bei uns ohne Zwischenfälle, per uv in einer eigenen Python-3.12-Umgebung, Version 2.3.7. Ein Hinweis vorab: Das Kommando code-review-graph install schreibt MCP-Configs, Hooks, Skills und Regel-Dateien in alle KI-Tools, die es auf dem Rechner findet. Wir wollten erst sehen, was das Tool kann, und sind deshalb bewusst bei der CLI geblieben. Die Kommandos entsprechen eins zu eins den MCP-Werkzeugen.

code-review-graph installieren und Graph bauen
1pip install code-review-graph
2
3# Graph für das aktuelle Repo bauen:
4code-review-graph build
5
6# Statistik ansehen:
7code-review-graph status

Der erste Build brauchte 16 Sekunden für 460 Dateien und lieferte 1.909 Knoten mit 11.262 Kanten. Im Log fiel eine Randnotiz auf: igraph nicht installiert, die Community-Erkennung fällt auf einen einfacheren Modus zurück. Ein optionales Extra, das die Doku kaum erwähnt.

Die Build-Artefakte-Falle

Dann der Blick in die Datenbank, und da war sie wieder, die Falle aus dem letzten Test: 1.014 von 1.137 JavaScript-Knoten stammten aus unserem Build-Ordner, den minifizierten Vite-Bundles. code-review-graph filtert zwar *.min.js heraus, unsere Bundles heißen aber alpinejs-Cm4okMZt.js und fallen durch das Raster. Und weil unser Hoster nicht selbst baut, liegen sie im Git-Index, der Dateifilter über git greift also ebenfalls nicht.

Der Fix ist sauber gelöst: eine Ignore-Datei im gitignore-Format.

.code-review-graphignore im Repo-Root
1# .code-review-graphignore
2public/_build/**
3prototype/**

Danach: 5 Sekunden Build, 639 Knoten, 4.805 Kanten. Erst dieser Graph bildet unser Projekt ab. Im Repowise-Test war tokensave in dieselbe Falle getappt. Die Lehre gilt offenbar für die gesamte Werkzeugklasse: Nach dem ersten Build immer nachsehen, was tatsächlich im Index gelandet ist.

Blast Radius: präzise Karte, teures JSON

Jetzt zum Kern-Feature. Für unseren am häufigsten umgebauten Service, gut 1.100 Zeilen PHP, liefert die Impact-Analyse: 59 Symbole direkt betroffen, 237 innerhalb von zwei Hops, 76 weitere Dateien im Wirkungskreis, inklusive der Tests und Controller, die dranhängen. Als Karte für ein Review ist das genau die richtige Information.

Nur: Die Antwort selbst umfasste rund 76.000 Tokens JSON. Mit Ergebnis-Limit 20 blieben knapp 30.000. Die geänderte Datei hat etwa 15.000. Für dieses Kommando kostet die Analyse auf unserem Repo also das Doppelte dessen, was der Agent durch gezieltes Lesen spart. Das eingebaute Sparfeld context_savings meldete konsequenterweise 0 gesparte Tokens. Zur Ehrenrettung: Genau diesen Effekt bei kleinen Commits dokumentiert das Projekt selbst, siehe oben. Auf einem Monorepo mit zehntausenden Dateien dreht sich das Verhältnis um. Unser Repo ist schlicht die falsche Größenklasse für dieses Feature.

Suche und Queries: hier sitzt jeder Treffer

Ganz anders die gezielten Werkzeuge. Die Volltext-Suche nach newsletter turnstile lieferte exakt einen Treffer, die Turnstile-Verifikation in unserer Bot-Schutz-Klasse, mit Dateipfad und Zeilennummern, für rund 300 Tokens. Die Frage nach den Aufrufern derselben Methode: ein Ergebnis, wieder unter 300 Tokens. Das ist die Sorte Antwort, für die sich ein Code-Graph lohnt. Bei mehrdeutigen Namen kommt statt einer geratenen Antwort eine Kandidatenliste mit qualifizierten Namen zurück.

Ein Kuriosum am Rande: PHP-Signaturen rendert das Tool im Python-Stil, aus unserer Methode wird def verifyTurnstile mit PHP-Parametern in Python-Klammern. Kosmetik, aber sie verrät, wo das Tool herkommt.

Das Laravel-Versprechen im Realitätscheck

Die beworbene Laravel-Unterstützung hält in zwei von drei Punkten. Routen: ja. 95 Kanten führen aus unserer routes/web.php in den Graph, Controller-Actions wie AiCheckController.pdf werden korrekt als Aufrufe aufgelöst. Blade: ja, acht Template-Dateien erkannt, vom Control-Panel-View bis zum PDF-Report. Auch die Vererbungskanten zu Command- und Controller-Basisklassen stimmen.

Antlers: nein. Die Template-Hälfte eines Statamic-Projekts bleibt für den Graph unsichtbar, genau wie bei tokensave und Repowise. Immerhin hat code-review-graph als einziges Tool der Serie einen offiziellen Erweiterungsmechanismus: Eine languages.toml im Projekt kann eigene Sprachen nachrüsten. Der Haken: Sie setzt eine fertige Tree-sitter-Grammatik voraus, und für Antlers existiert keine. Der Ausweg bleibt vorerst Theorie, für Shopify-Projekte mit Liquid gilt dasselbe.

Dead Code: 119 Funde, die meisten leben

Die Dead-Code-Analyse meldete 119 Symbole ohne Aufrufer. Beim Durchsehen zeigte sich: Die Mehrheit lebt. Gemeldet wurden Controller, die über Routen-Definitionen laufen, Middleware aus der Bootstrap-Registrierung, Statamic-Actions und -Tags, die das CMS per Konvention lädt, und sogar unsere Test-Klassen. Wer diese Liste ungeprüft abarbeitet, legt die Seite lahm.

Der Befund deckt sich mit beiden Vorgängertests: Graph-basierte Dead-Code-Erkennung scheitert an Framework-Magie, denn was per Konvention oder Container geladen wird, hat im statischen Graph keine eingehende Kante. Bei Statamic stapelt sich Konvention auf Konvention. Als Einstiegssignal für eine manuelle Prüfung taugt die Liste, als Löschliste nicht.

Inkrementelle Updates und was wir nicht getestet haben

Nach einer Dateiänderung war der Graph in unter einer Sekunde wieder aktuell. Watch-Mode und Editor-Hooks automatisieren das, sodass der Graph beim Arbeiten mitläuft. Dieses Konzept überzeugt uns auch hier: Ein Index, der veraltet, ist schlimmer als keiner.

Nicht bewertet haben wir die MCP-Anbindung in echten Agenten-Sessions, weil der Installer in viele Tool-Configs gleichzeitig schreibt und uns das für einen Test zu invasiv war. Ebenfalls offen: die GitHub Action im CI-Alltag und die optionale semantische Suche per Embeddings. Die Kern-Queries laufen aber identisch über CLI und MCP, die Token-Zahlen oben gelten für beide Wege.

Unser Fazit

code-review-graph macht vieles richtig: präzise Einzel-Queries zu minimalen Token-Kosten, inkrementelle Updates in unter einer Sekunde, die ehrlichste Benchmark-Doku der Kategorie und als einziges Tool der Serie eine CI-Integration für Pull-Request-Reviews. Dem stehen drei Schwächen gegenüber: Impact-Antworten, die auf kleinen Repos mehr Kontext kosten als sie sparen, eine für Framework-Projekte unbrauchbare Dead-Code-Liste und die Artefakte-Falle beim Setup.

So sehen die drei Tests der Serie nebeneinander aus:

code-review-graph Repowise tokensave
Fokus Blast Radius für Reviews Kuratierter Kontext + Git-Analyse Rund 100 feingranulare Graph-Werkzeuge
Indexlauf (unser Repo) 16 s, nach Ignore-Fix 5 s 48 s Erst-Init nach 70+ min abgebrochen
Git-Historie / Hotspots
Laravel-Routen & Blade ✓ aufgelöst PHP ja, Routen ungeprüft Aufruf-Auflösung lückenhaft
Antlers / Liquid
Dead Code auf Framework-Projekt 119 Funde, Mehrzahl lebt False Positives (ServiceProvider) False Positives in derselben Klasse
CI-Integration (PR-Review) ✓ GitHub Action
Eigene Sprachen nachrüstbar ✓ per languages.toml
Unsere Empfehlung Monorepos und große Codebasen Kleine bis mittlere Repos ✓ Für PHP-Projekte nicht

Die Einordnung hängt deshalb an der Repo-Größe. Für Monorepos und große Codebasen ist code-review-graph der spannendste Kandidat, den wir bisher hatten, dort spielt der Blast Radius seine Stärke aus. Für unsere Größenklasse bleibt der Sieger aus dem letzten Test erste Wahl, vor allem wegen der Git-Schicht. Im Gesamtbild ist Codebase-Intelligence ohnehin nur eine Ebene: RTK kürzt Befehlsausgaben, und wie alle Bausteine zusammenspielen, zeigt unser AI-Coding-Werkzeug-Stack. Wenn du dein Setup mit uns aufbauen willst: Melde dich bei uns.

T

Tobias Graeger

Inhaber & Shopify-Entwickler

Tobias leitet alle Projekte persönlich. Mit über 50 abgeschlossenen Shopify-Projekten kennt er die Plattform vom Liquid-Template bis zur API-Integration. Sein Fokus: technisch saubere Lösungen, die mit dem Business mitwachsen.

LinkedIn

Hat dir der Beitrag gefallen?

Ein Klick reicht und wir wissen, welche Themen wir weiter vertiefen sollen.

Feedback konnte gerade nicht gespeichert werden.

Beitrag teilen