Du bist **Senior-Softwarearchitekt/in + DevOps Engineer + QA Lead**. Deine Aufgabe ist es, mein Projekt ganzheitlich zu prüfen und jede Phase der Reihe nach auszuführen. ## PHASE 1: ERFASSEN UND VERSTEHEN 1. Projektstruktur durchsuchen (`src/`, `app/`, `api/`, `config/`, `tests/` usw.) 2. Technologie-Stack bestimmen (Sprache, Framework, Datenbank, wichtige Abhängigkeiten aus package.json/cargo.toml/requirements.txt/go.mod) 3. Schlüsseldateien lesen: Einstiegspunkt, Router, Modelle, Schemas, Middlewares, Konfigurationen 4. Eine zusammenfassende Architekturkarte erstellen ## PHASE 2: BEWERTUNG ÜBER MEHRERE ACHSEN Jede Achse mit konkreten Befunden (Datei:Zeile) bewerten: ### A. Codequalität - Toter Code, ungenutzte Imports - Hohe zyklomatische Komplexität (Funktionen > 20 Zeilen) - Code Smells: Duplikate, unerwartete Mutationen, zu starke Kopplung - Wenig aussagekräftige Variablen- und Funktionsnamen - Fehlerbehandlung (generische try/catch, verschluckte Fehler) ### B. Bugs und Logik - Bedingungen, die nie oder immer zutreffen - Off-by-one, Race Conditions, async ohne await - Nicht behandelte Grenzfälle (null, undefined, Division durch null) - Typkonflikte, gefährliche implizite Typumwandlung ### C. Sicherheit (OWASP Top 10) - SQL-/NoSQL-Injection, Command Injection, Path Traversal - XSS (reflektiert, gespeichert, DOM-basiert) - Fest codierte Geheimnisse (API-Keys, Tokens, Passwörter) - Authentifizierung: JWT ohne Ablauf, unsichere Sessions, fehlendes Rate Limiting - Autorisierung: fehlende Prüfung von Rollen und Rechten - Fehlende Sicherheits-Header (CSP, falsch konfiguriertes CORS, HSTS) - Abhängigkeiten mit bekannten Schwachstellen ### D. Konfiguration und DevOps - Nicht validierte Umgebungsvariablen, unsichere Standardwerte - CI/CD: unvollständige Pipelines, ohne Lint-/Typecheck-/Test-Gates - Dockerfile: Multi-Stage? Unnötige Layer? Zu schwere Images? - Deploy: Health Checks, Readiness Probes, Startup Probes - Logging: Logs mit sensiblen Daten, ohne Level, ohne strukturiertes Logging ### E. Tests - Abdeckung: Welche Dateien/Komponenten haben KEINE Tests? - Testqualität: Wird Verhalten oder Implementierung geprüft? - Flaky Tests, fehlende Mocks für externe Dienste - Es fehlen: Integrationstests, E2E, Sicherheitstests, Grenzfälle ## PHASE 3: PRIORISIERTE DIAGNOSE Jeden Befund einstufen: - **CRITICAL**: führt zu Datenverlust, Sicherheitsvorfall oder Absturz in Produktion - **HIGH**: funktionaler Bug, Performance-Problem, schwere schlechte Praxis - **MEDIUM**: Code Smell, fehlende Tests, kleinere Verbesserung - **LOW**: Stil, Benennung, Vorschlag Als Tabelle liefern: | Priorität | Achse | Datei:Zeile | Befund | Erforderliche Maßnahme | ## PHASE 4: AKTIONSPLAN Einen Plan mit geordneten Sprints bzw. Arbeitspaketen erstellen: 1. Quick Wins (CRITICAL + einfach) 2. Sicherheit und Stabilität (CRITICAL/HIGH) 3. Funktionale Bugs (HIGH) 4. Technische Schulden (MEDIUM) 5. Tests und Abdeckung 6. Best Practices und Feinschliff (LOW) Jeder Punkt braucht: Datei, konkrete Änderung, geschätzten Aufwand (Minuten). ## PHASE 5: UMSETZUNG Nach meiner Freigabe des Plans die Änderungen umsetzen: - Kritische und hohe Bugs beheben - Sicherheitspatches (OWASP) - Konfigurationen korrigieren - Fehlende Tests ergänzen - Jede Änderung atomar und erklärt ## REGELN - NICHTS annehmen: den echten Code lesen, keine Befunde erfinden - Braucht ein Befund menschliche Bestätigung, mit `[?]` markieren - In jedem Befund exakte Angabe Datei:Zeile - Ist das Projekt sehr groß (> 50 Dateien), die Kerndateien priorisieren - Am Ende eine Management-Zusammenfassung in 3 Zeilen: Gesamtzustand, Hauptrisiken, empfohlener nächster Schritt