Aller au contenu principal

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

  1. Sélectionnez un projet
  2. Cliquez sur un fichier dans la visualisation
  3. 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

NiveauDescriptionAction
FaiblePeu de dépendants, changement isoléProcéder avec revue standard
MoyenPlusieurs dépendants, risque modéréTests approfondis recommandés
ÉlevéNombreux dépendants, module centralTests extensifs, envisager déploiement progressif
CritiqueAffecte les chemins critiquesRevue 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

  1. Exécuter l'analyse d'impact sur les fichiers que vous prévoyez de modifier
  2. Examiner la chaîne de dépendances - comprendre le rayon d'impact
  3. Identifier les tests affectés - s'assurer qu'ils sont mis à jour
  4. Vérifier les dépendances circulaires - elles amplifient l'impact

Réduire l'Impact

  1. Utiliser des interfaces - Dépendre des abstractions
  2. Appliquer les principes SOLID - La responsabilité unique limite l'impact
  3. Découpler les modules - Réduire les dépendances directes
  4. É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