Zum Hauptinhalt springen

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
  • 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

RegelBeschreibung
no-circular-depsVerhindert zirkuläre Abhängigkeiten
max-complexityBegrenzt zyklomatische Komplexität
max-file-lengthBegrenzt Dateigröße
naming-conventionErzwingt 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

  1. Regelmäßig analysieren - Probleme früh erkennen
  2. Architekturregeln definieren - Verletzungen verhindern
  3. Komplexität überprüfen - Hotspots refactoren
  4. Trends überwachen - Metriken über Zeit verfolgen