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
Navigation
- 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ègle | Description |
|---|---|
no-circular-deps | Empêche les dépendances circulaires |
max-complexity | Limite la complexité cyclomatique |
max-file-length | Limite la taille du fichier |
naming-convention | Impose 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
- Exécuter l'analyse régulièrement - Détecter les problèmes tôt
- Définir des règles d'architecture - Prévenir les violations
- Examiner la complexité - Refactorer les points chauds
- Surveiller les tendances - Suivre les métriques dans le temps