Technische Schulden und Architekturprobleme in TypeScript/JS sofort erkennen: Automatisiertes Codebase-Audit mit fallow
von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau — Ich entwickle und betreibe autonome Multi-Agenten-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst gehostetem Postgres. In produktiven Projekten erleben Sie es oft: Wochenlanges manuelles Review, trotzdem bleiben zyklische Abhängigkeiten, toter Code und Architekturfehler unentdeckt. Mit fallow identifiziere ich diese Schwachstellen in weniger als 30 Minuten — DSGVO-konform, lokal, ohne Demo
von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau — Ich entwickle und betreibe autonome Multi-Agenten-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst gehostetem Postgres. In produktiven Projekten erleben Sie es oft: Wochenlanges manuelles Review, trotzdem bleiben zyklische Abhängigkeiten, toter Code und Architekturfehler unentdeckt. Mit fallow identifiziere ich diese Schwachstellen in weniger als 30 Minuten — DSGVO-konform, lokal, ohne Demo-Show.
Manueller Code-Review: Subjektiv, langsam, lückenhaft
Standardmäßig wird ein TypeScript/JS-Projekt im manuellen Review-Verfahren geprüft: Ein Senior-Entwickler durchforstet das Repository, meldet „Code Smells“ und schreibt lange Listen. Die Realität:
- Viele Hinweise sind subjektiv und diskutabel,
- Kritische Schwachstellen (z.B. SQL-Injection, falsch gehandhabte Secrets) bleiben oft verborgen,
- Architekturprobleme (z.B. zyklische Abhängigkeiten, versteckte Seiteneffekte) tauchen ohne Spezialtools kaum auf.
In drei meiner letzten Agenten-Deployments habe ich wiederholt SQL-Injection-Muster im automatisch generierten DB-Layer gefunden — trotz bestandener menschlicher Reviews.
Was ist fallow? Warum ist es für JS/TS-Projekte praxistauglich?
fallow ist ein Open-Source-Tool zur statischen Analyse von TypeScript- und JavaScript-Code. Es erzeugt einen vollständigen Abhängigkeitsgraphen, erkennt „toten“ (ungenutzten) Code, zyklische Abhängigkeiten, vergessene Entry-Points und typische Architektur-Antipatterns. Projekt-Link: https://github.com/fallow-land/fallow
| Tool | JS/TS-Unterstützung | Architekturprüfung | Visualisierung | Open Source |
|---|---|---|---|---|
| fallow | Ja | Ja | Ja | Ja |
| ESLint | Ja | Teilweise | Nein | Ja |
| depcruise | Ja | Teilweise | Ja | Ja |
| SonarQube | Ja | Teilweise | Ja | Nein |
fallow läuft vollständig lokal, kein Code verlässt das Unternehmen — ein Compliance-Anker für DSGVO, BSI Grundschutz und EU AI Act.
Typische Schwachstellen im JS/TS-Monolith, die fallow aufdeckt
- Zyklische Abhängigkeiten: erschweren Refactoring, verhindern Tree-Shaking, erschweren automatisiertes Testen.
- Toter Code: Überbleibsel nach Migrationen, die nie aufgerufen werden.
- Verborgene Entry-Points: vergessene Endpoints, nicht offensichtliche Seiteneffekte.
- „Feature Envy“: Module, die zu eng gekoppelt sind und das Single-Responsibility-Prinzip verletzen.
- Komplexe Abhängigkeitsgraphen: schwer nachvollziehbar, was die Kernlogik beeinflusst.
In produktiven Systemen mit mehr als 2 Jahren Laufzeit finde ich regelmäßig mindestens 3–5 kritische Zyklen und dutzende tote Dateien.
fallow in der Praxis: Integration in reale TypeScript/JS-Projekte
1. Schneller Start — Audit im lokalen Umfeld
npm install -g @fallow-land/cli
fallow -p ./src --format json --report report.json
cat report.json | jq '.'Das Ergebnis: ein detaillierter JSON-Report mit Abhängigkeitsgraph, Zyklen, totem Code und verwaisten Modulen. Berichte teile ich via Notion oder automatisiert über n8n an Slack.
2. Visualisierung zur Architektur-Analyse
fallow -p ./src --format html --report report.html
open report.htmlDie Visualisierung von Zyklen und totem Code ist nicht „nice to have“. Bei einem Kundenprojekt sah man sofort, dass das Payments-Modul noch von einem veralteten Auth-Service abhing — ein Compliance-Risiko für DSGVO und interne Auditprozesse.
3. Integration in CI/CD-Pipeline und Benachrichtigung
# .github/workflows/fallow-audit.yml
name: fallow audit
on:
push:
branches: [ main ]
jobs:
fallow-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm install -g @fallow-land/cli
- run: fallow -p ./src --format json --report report.json
- uses: actions/upload-artifact@v4
with:
name: fallow-report
path: report.jsonJeder Push auf „main“ löst einen automatischen Architektur-Check aus. Ergebnisse erscheinen im Pull Request oder werden via n8n an Slack gesendet.
Einsatzszenarien für fallow in regulierten Märkten
- Regelmäßige Audits von Legacy-Code vor Major-Releases,
- Codebase-Bewertung bei Firmenübernahmen oder Outsourcing,
- Automatische Prüfung von Pull Requests auf neue Zyklen,
- Zusammenfassung für CTO/PM über Claude- oder GPT-Integration.
In Kombination mit semgrep (semgrep.dev) decken Sie sowohl Architektur- als auch Sicherheitsrisiken ab: semgrep für Schwachstellen, fallow für strukturelle Schulden. Im Kontext von DSGVO, NIS2 und BaFin-Anforderungen ist das unerlässlich.
FAQ
Kann fallow mit Monorepos und mehreren Packages umgehen?
Ja, fallow unterstützt Monorepos. Sie sollten das Tool im Projekt-Root ausführen und alle relevanten Entry-Points angeben.
Wie unterscheidet sich fallow von depcruise oder ESLint?
depcruise visualisiert Abhängigkeiten, ESLint prüft Stil und Fehler. Nur fallow erkennt direkt toten Code und Zyklen auf Architektur-Ebene.
Wie gehen Sie mit sehr großen Reports (500+ Dateien) um?
Ich lasse Claude oder GPT ein Summary generieren: „Nenne die fünf kritischsten Zyklen und toten Dateien.“ Perfektion ist nicht das Ziel — es geht um die gefährlichsten Hotspots.
Besteht bei fallow ein Risiko einer Code-Abwanderung?
Nein, fallow arbeitet strikt lokal. Kein Code verlässt das Unternehmen, was für Compliance (DSGVO, ISO 27001) essenziell ist.
Lässt sich fallow in n8n für Automatisierung integrieren?
Ja, via Shell-Kommandos und JSON-Parsing. Ich lasse regelmäßig automatisierte Slack- und Telegram-Reports über n8n generieren.
Wann haben Sie Ihren JS/TS-Code zuletzt als Architekturgraph und nicht nach Bauchgefühl betrachtet? In welcher Stufe Ihrer Qualitätskette treten die meisten kritischen Fehler auf — im Review oder erst nach Produktivgang? Ich biete DACH-Unternehmen im regulierten AI-Umfeld einen kostenlosen 30-min Stack-Audit. Kontaktieren Sie mich auf LinkedIn oder unter @ger_dennis_ai.
Aus einem Ablauf ein System machen, das läuft
Gebaut für den Betriebsalltag, nicht als Demo.