Aller au contenu principal

Analyse d'Architecture

Apprenez à utiliser ArchiCore pour comprendre et améliorer l'architecture de votre code.

Vue d'Ensemble

ArchiCore analyse la structure de votre code pour identifier :

  • Les dépendances de modules
  • Les dépendances circulaires
  • Les violations de couches
  • Les points chauds de complexité
  • Les patterns d'architecture

Visualisation

Graphe de Dépendances

Le tableau de bord principal affiche un graphe de dépendances interactif :

  • Nœuds représentent les fichiers ou modules
  • Arêtes représentent les imports/dépendances
  • Couleurs indiquent les types de modules ou l'état de santé
  • Taille reflète la complexité du fichier
  • Zoom avec la molette de la souris
  • Déplacer en glissant
  • Clic sur les nœuds pour voir les détails
  • Double-clic pour se concentrer sur un module

Règles d'Architecture

Définissez des règles pour imposer des limites architecturales.

Création de Règles

// .archicore/rules.json
{
"rules": [
{
"id": "layer-separation",
"name": "Séparation des Couches",
"type": "import",
"severity": "error",
"config": {
"forbidden": [
{
"from": "controllers/*",
"to": "repositories/*",
"message": "Les contrôleurs ne doivent pas accéder directement aux repositories"
}
]
}
}
]
}

Règles Intégrées

RègleDescription
no-circular-depsEmpêche les dépendances circulaires
max-complexityLimite la complexité cyclomatique
max-file-lengthLimite la taille du fichier
naming-conventionImpose les standards de nommage

Validation des Règles

> /rules validate
Validation des règles d'architecture...

✓ no-circular-deps: RÉUSSI
✗ layer-separation: ÉCHOUÉ (2 violations)
- src/controllers/user.ts:5 importe src/repositories/user.ts
- src/controllers/product.ts:3 importe src/repositories/product.ts

Contextes Délimités

Définissez des limites logiques dans votre application :

// .archicore/architecture.json
{
"boundedContexts": [
{
"name": "Authentification",
"description": "Authentification utilisateur et sessions",
"paths": ["src/auth/*", "src/middleware/auth*"]
},
{
"name": "Produits",
"description": "Gestion du catalogue produits",
"paths": ["src/products/*", "src/inventory/*"]
}
]
}

Métriques

Métriques de Complexité

  • Complexité Cyclomatique - Nombre de chemins indépendants
  • Complexité Cognitive - Difficulté de compréhension du code
  • Indice de Maintenabilité - Score global de maintenabilité

Identification des Points Chauds

> /metrics --sort complexity
Points Chauds de Complexité du Code :

1. src/services/order.ts:processOrder()
Complexité: 25 | Lignes: 180 | Maintenabilité: 45

2. src/utils/parser.ts:parseInput()
Complexité: 18 | Lignes: 120 | Maintenabilité: 52

3. src/api/handlers.ts:handleRequest()
Complexité: 15 | Lignes: 95 | Maintenabilité: 58

Suggestions de Refactoring

ArchiCore peut suggérer des opportunités de refactoring :

> /refactoring src/services/order.ts
Suggestions de Refactoring pour src/services/order.ts:

1. Extraire Méthode
processOrder() est trop complexe (25)
Suggestion: Extraire la logique de validation vers validateOrder()

2. Diviser le Fichier
Le fichier a 180 lignes avec plusieurs responsabilités
Suggestion: Diviser en OrderProcessor et OrderValidator

3. Réduire les Dépendances
Le fichier importe 12 modules
Suggestion: Envisager le pattern facade pour réduire le couplage

Bonnes Pratiques

  1. Exécuter l'analyse régulièrement - Détecter les problèmes tôt
  2. Définir des règles d'architecture - Prévenir les violations
  3. Examiner la complexité - Refactorer les points chauds
  4. Surveiller les tendances - Suivre les métriques dans le temps