Statische Analyse prüft Regeln. Nicht ob sie Sinn ergeben.

0 kritische Issues im Dashboard. 3 inkompatible Session-Management-Ansätze in der Codebasis.

Split scene contrasting rule-based static analysis alerts with contextual AI reasoning over architecture

Ihr SonarQube-Dashboard zeigt 0 kritische Issues. Grün auf ganzer Linie. Ausliefern.

In der Zwischenzeit hat Ihre Codebasis drei inkompatible Session-Management-Ansätze. Es gibt ein selbstgebautes ORM, das Verbindungsfehler stillschweigend verschluckt. Der Authentifizierungsfluss funktioniert technisch, verstößt aber gegen jedes Sicherheitsprinzip der OWASP Top 10 – nicht wegen einer spezifischen Schwachstelle, die ein Scanner erkennen würde, sondern weil die Gesamtarchitektur keinen Sinn ergibt. Die Session-Tokens werden in einem Modul in localStorage gespeichert und in einem anderen in httpOnly Cookies. Der Passwort-Reset-Flow umgeht den Rate Limiter, weil er gebaut wurde, bevor der Rate Limiter existierte.

Nichts davon erscheint in Ihrem Dashboard. Jede Regel wird eingehalten. Die Codebasis ist grün.


Regeln finden Regelverstöße. Keine schlechte Architektur.

Statische Analyse-Tools sind hervorragend in dem, was sie tun. Sie gleichen Code-Muster mit einer Datenbank bekannter Probleme ab. Ungenutzte Variable? Erkannt. Ungeprüfte Null-Dereferenzierung? Erkannt. SQL-String-Konkatenation statt parametrisierter Abfragen? Erkannt. Diese Tools haben Tausende echter Bugs davon abgehalten, in Produktion zu gelangen, und sie verdienen jede Verbreitung, die sie erreicht haben.

Aber die schwierigsten Probleme in Legacy-Codebasen sind keine Regelverstöße. Es sind Architekturentscheidungen, die vor fünf Jahren sinnvoll waren und es heute nicht mehr sind. Es sind Muster, die organisch entstanden sind, als verschiedene Teams dasselbe Problem auf unterschiedliche Weise gelöst haben. Es sind die Art von Problemen, die ein erfahrener Entwickler bei einem gründlichen Code Review bemerken würde, die aber in keiner Regeldatenbank stehen – weil sie keine Verstöße gegen eine bestimmte Regel sind, sondern Verstöße gegen die Kohärenz.

Bedenken Sie, was ein regelbasiertes Tool nicht ausdrücken kann:

  • Ihr Projekt verwendet drei verschiedene Logging-Frameworks – Winston in der API-Schicht, Bunyan in den Background Workern und rohes console.log in den Utility-Modulen. Keines davon ist für sich genommen falsch. Zusammen bedeuten sie, dass Ihre Observability fragmentiert, Ihre Log-Formate inkonsistent sind und das Debugging einer Anfrage, die Modulgrenzen überschreitet, drei verschiedene Ausgaben erfordert.
  • Die Hälfte Ihres asynchronen Codes verwendet Callbacks, die andere Hälfte Promises. Jemand hat vor zwei Jahren eine Migration begonnen und ist auf halbem Weg steckengeblieben. Das Ergebnis: Fehlerbehandlung verhält sich unterschiedlich, je nachdem, in welcher Hälfte der Codebasis Sie sich befinden – und die Grenze zwischen den beiden Hälften ist der Ort, an dem die Bugs leben.
  • Es gibt 47 Feature Flags in der Konfiguration. Zwölf davon steuern Features, die vor über einem Jahr für alle Nutzer ausgerollt wurden. Acht beziehen sich auf beendete A/B-Tests. Drei werden im Code geprüft, aber nirgends gesetzt. Niemand traut sich, sie zu entfernen, weil niemand weiß, was sie alle bewirken.

Ein statischer Analyzer wird nichts davon bemängeln. Es sind keine Regelverstöße. Es ist die Art von akkumulierter Komplexität, die Codebasen schwer bearbeitbar, langsam veränderbar und teuer in der Wartung macht.


Was “Review” wirklich bedeutet

Wenn ein erfahrener Entwickler eine Codebasis reviewt – nicht einen Diff, sondern eine tatsächliche Codebasis – prüft er keine Regeln. Er baut ein mentales Modell auf. Er liest Datei für Datei und akkumuliert Kontext. Er beginnt, Muster zu erkennen: wie Fehler hier im Vergleich zu dort behandelt werden, welche Konventionen konsistent eingehalten werden und welche nicht, wo die Grenzen zwischen Modulen sauber sind und wo sie verwoben sind.

Er bemerkt Dinge, die nicht hineingehören. Eine Datenbankabfrage in einem View-Template. Geschäftslogik in einer Utility-Funktion. Ein Retry-Mechanismus, der viermal in vier verschiedenen Dateien neu implementiert wurde. Konfigurationswerte, die an manchen Stellen hartcodiert und an anderen aus Umgebungsvariablen gelesen werden.

Diese Art von Review erzeugt etwas, das kein Dashboard liefern kann: ein narratives Verständnis davon, was mit der Codebasis nicht stimmt und warum. Keine Liste zeilenbezogener Issues, sondern eine Bewertung des Systems als Ganzes.

Das Problem ist, dass dieses Review Tage oder Wochen teurer menschlicher Arbeitszeit kostet. Deshalb findet es fast nie statt. Die Codebasis wächst, die Inkonsistenzen häufen sich, und das Dashboard bleibt grün.

Genau diese Art von Reasoning können Large Language Models jetzt im großen Maßstab leisten. Ein LLM kann Dateien sequentiell lesen, Kontext über Hunderte von Dateien aufbauen und über die Beziehungen zwischen ihnen urteilen. Es prüft nicht, ob eine Zeile eine Regel verletzt. Es fragt, ob der Code als Ganzes Sinn ergibt.


VibeRails schließt die Lücke

VibeRails ist eine Desktop-Anwendung, die Claude Code und Codex CLI orchestriert, um Full-Codebase Code Review durchzuführen. Sie liest jede Datei in Ihrem Projekt, urteilt über das Ganze und deckt die Issues auf, die zwischen den Zeilen leben – die, für deren Erkennung regelbasierte Tools nie konzipiert waren.

Die Analyse umfasst 17 Erkennungskategorien, die über das hinausgehen, was Pattern Matching ausdrücken kann: Sicherheitslücken, Performance-Engpässe, Bug-Risiken, Dead Code, Komplexitäts-Hotspots, Type-Safety-Lücken, Schwächen in der Fehlerbehandlung, API-Design-Probleme, Barrierefreiheit, Observability-Lücken, Concurrency-Risiken, Datenintegritätsprobleme, Internationalisierungs-Issues, Abhängigkeitsprobleme, Dokumentationslücken, Test-Defizite und Wartbarkeits-Smells.

Der Triage-Modus erlaubt es Ihnen, Findings effizient zu bearbeiten – akzeptieren, ablehnen oder zurückstellen per Tastaturkürzel. Fix-Sessions beauftragen KI-Agenten, die Änderungen direkt in Ihrem lokalen Repository umzusetzen. Sie prüfen den Diff, testen und committen.

VibeRails nutzt das BYOK-Modell: Es orchestriert Ihre bestehenden KI-Abonnements, anstatt Requests über einen VibeRails-Cloud-Service zu proxen. Ihre API Keys bleiben lokal, und Ihr Code wird nicht auf VibeRails-Server hochgeladen. Sie bezahlen keinen Mittelsmann dafür, Ihnen Zugang zu KI zu verkaufen, die Sie bereits haben.


Statische Analyse ist notwendig. Sie reicht nur nicht aus. Das grüne Dashboard sagt Ihnen, dass Ihr Code die Regeln befolgt. Es sagt Ihnen nicht, ob die Regeln die richtigen sind oder ob der Code, der sie befolgt, als System Sinn ergibt.

Testen Sie VibeRails kostenlos – bis zu 5 Issues pro Review-Session, keine Registrierung erforderlich.


Limits and tradeoffs

  • It can miss context. Treat findings as prompts for investigation, not verdicts.
  • False positives happen. Plan a quick triage pass before you schedule work.
  • Privacy depends on your model setup. If you use a cloud model, relevant code is sent to that provider; local models can keep inference on your own hardware.