Analyse d'Impact
Comprenez les effets en cascade des modifications de code avant de les effectuer.
Qu'est-ce que l'Analyse d'Impact ?
L'analyse d'impact répond à la question : "Si je modifie ce fichier, qu'est-ce qui sera affecté ?"
Cela vous aide à :
- Planifier les changements plus soigneusement
- Identifier les tests requis
- Éviter les cassures inattendues
- Estimer l'effort pour les changements
Exécuter l'Analyse d'Impact
Interface Web
- Sélectionnez un projet
- Cliquez sur un fichier dans la visualisation
- Cliquez sur Analyser l'Impact
CLI
> /analyze src/services/user.ts
API
curl -X POST https://api.archicore.io/api/v1/projects/:id/analyze \
-H "Authorization: Bearer VOTRE_API_KEY" \
-d '{"path": "src/services/user.ts"}'
Comprendre les Résultats
Analyse d'Impact pour src/services/user.ts
╭─────────────────────────────────────────╮
│ Dépendances Directes (5) │
├─────────────────────────────────────────┤
│ → src/utils/crypto.ts │
│ → src/db/models/user.ts │
│ → src/config/auth.ts │
│ → src/types/user.ts │
│ → src/utils/validation.ts │
╰─────────────────────────────────────────╯
╭─────────────────────────────────────────╮
│ Dépendants - Seront Affectés (8) │
├─────────────────────────────────────────┤
│ ← src/controllers/auth.ts │
│ ← src/controllers/profile.ts │
│ ← src/controllers/admin.ts │
│ ← src/middleware/auth.ts │
│ ← src/services/session.ts │
│ ← src/api/routes/users.ts │
│ ← tests/user.test.ts │
│ ← tests/auth.test.ts │
╰─────────────────────────────────────────╯
Niveau de Risque : MOYEN
Tests Affectés : 2
Niveaux d'Impact
| Niveau | Description | Action |
|---|---|---|
| Faible | Peu de dépendants, changement isolé | Procéder avec revue standard |
| Moyen | Plusieurs dépendants, risque modéré | Tests approfondis recommandés |
| Élevé | Nombreux dépendants, module central | Tests extensifs, envisager déploiement progressif |
| Critique | Affecte les chemins critiques | Revue supplémentaire, feature flags recommandés |
Simuler les Changements
Prévisualisez l'impact d'un changement proposé :
> /simulate
Décrivez votre changement : Ajouter un nouveau paramètre à UserService.getUser()
Résultats de la Simulation :
Fichiers nécessitant des mises à jour :
1. src/controllers/auth.ts:34 - appelle getUser()
2. src/controllers/profile.ts:12 - appelle getUser()
3. src/services/session.ts:45 - appelle getUser()
Tests nécessitant des mises à jour :
1. tests/user.test.ts - 5 cas de test appellent getUser()
2. tests/auth.test.ts - 3 cas de test appellent getUser()
Effort estimé : Moyen (8 fichiers, 15 sites d'appel)
Bonnes Pratiques
Avant de Faire des Changements
- Exécuter l'analyse d'impact sur les fichiers que vous prévoyez de modifier
- Examiner la chaîne de dépendances - comprendre le rayon d'impact
- Identifier les tests affectés - s'assurer qu'ils sont mis à jour
- Vérifier les dépendances circulaires - elles amplifient l'impact
Réduire l'Impact
- Utiliser des interfaces - Dépendre des abstractions
- Appliquer les principes SOLID - La responsabilité unique limite l'impact
- Découpler les modules - Réduire les dépendances directes
- Écrire des couches facade - Masquer les détails d'implémentation
Exemple : Refactoring Sécurisé
// Avant : Dépendance directe
// Modifier User affecte tous les consommateurs
class UserController {
constructor(private userService: UserService) {}
}
// Après : Dépendance d'interface
// Modifier l'implémentation de UserService n'affecte pas les consommateurs
interface IUserService {
getUser(id: string): Promise<User>;
}
class UserController {
constructor(private userService: IUserService) {}
}
Intégration CI/CD
Ajoutez l'analyse d'impact à votre pipeline :
# .gitlab-ci.yml
impact-analysis:
script:
- archicore analyze --changed-files
- if [ $IMPACT_LEVEL == "critical" ]; then
echo "Impact critique détecté - nécessite une revue supplémentaire";
exit 1;
fi