Architekturanalyse
Lernen Sie, wie Sie ArchiCore verwenden, um Ihre Codebase-Architektur zu verstehen und zu verbessern.
Übersicht
ArchiCore analysiert Ihre Code-Struktur um zu identifizieren:
- Modul-Abhängigkeiten
- Zirkuläre Abhängigkeiten
- Schichtverletzungen
- Komplexitäts-Hotspots
- Architekturmuster
Visualisierung
Abhängigkeitsgraph
Das Hauptdashboard zeigt einen interaktiven Abhängigkeitsgraphen:
- Knoten repräsentieren Dateien oder Module
- Kanten repräsentieren Imports/Abhängigkeiten
- Farben zeigen Modultypen oder Zustand an
- Größe spiegelt Dateikomplexität wider
Navigation
- Zoom mit dem Mausrad
- Verschieben durch Ziehen
- Klick auf Knoten für Details
- Doppelklick um auf ein Modul zu fokussieren
Architekturregeln
Definieren Sie Regeln um architektonische Grenzen durchzusetzen.
Regeln erstellen
// .archicore/rules.json
{
"rules": [
{
"id": "layer-separation",
"name": "Schichtentrennung",
"type": "import",
"severity": "error",
"config": {
"forbidden": [
{
"from": "controllers/*",
"to": "repositories/*",
"message": "Controller sollten nicht direkt auf Repositories zugreifen"
}
]
}
}
]
}
Eingebaute Regeln
| Regel | Beschreibung |
|---|---|
no-circular-deps | Verhindert zirkuläre Abhängigkeiten |
max-complexity | Begrenzt zyklomatische Komplexität |
max-file-length | Begrenzt Dateigröße |
naming-convention | Erzwingt Namensstandards |
Regeln validieren
> /rules validate
Validiere Architekturregeln...
✓ no-circular-deps: BESTANDEN
✗ layer-separation: FEHLGESCHLAGEN (2 Verletzungen)
- src/controllers/user.ts:5 importiert src/repositories/user.ts
- src/controllers/product.ts:3 importiert src/repositories/product.ts
Bounded Contexts
Definieren Sie logische Grenzen in Ihrer Anwendung:
// .archicore/architecture.json
{
"boundedContexts": [
{
"name": "Authentifizierung",
"description": "Benutzerauthentifizierung und Sessions",
"paths": ["src/auth/*", "src/middleware/auth*"]
},
{
"name": "Produkte",
"description": "Produktkatalog-Verwaltung",
"paths": ["src/products/*", "src/inventory/*"]
}
]
}
Metriken
Komplexitätsmetriken
- Zyklomatische Komplexität - Anzahl unabhängiger Pfade
- Kognitive Komplexität - Wie schwer Code zu verstehen ist
- Wartbarkeitsindex - Gesamtwartbarkeits-Score
Hotspots identifizieren
> /metrics --sort complexity
Code-Komplexitäts-Hotspots:
1. src/services/order.ts:processOrder()
Komplexität: 25 | Zeilen: 180 | Wartbarkeit: 45
2. src/utils/parser.ts:parseInput()
Komplexität: 18 | Zeilen: 120 | Wartbarkeit: 52
3. src/api/handlers.ts:handleRequest()
Komplexität: 15 | Zeilen: 95 | Wartbarkeit: 58
Refactoring-Vorschläge
ArchiCore kann Refactoring-Möglichkeiten vorschlagen:
> /refactoring src/services/order.ts
Refactoring-Vorschläge für src/services/order.ts:
1. Methode extrahieren
processOrder() ist zu komplex (25)
Vorschlag: Validierungslogik in validateOrder() extrahieren
2. Datei aufteilen
Datei hat 180 Zeilen mit mehreren Verantwortlichkeiten
Vorschlag: In OrderProcessor und OrderValidator aufteilen
3. Abhängigkeiten reduzieren
Datei importiert 12 Module
Vorschlag: Facade-Muster erwägen um Kopplung zu reduzieren
Best Practices
- Regelmäßig analysieren - Probleme früh erkennen
- Architekturregeln definieren - Verletzungen verhindern
- Komplexität überprüfen - Hotspots refactoren
- Trends überwachen - Metriken über Zeit verfolgen