Passa al contenuto principale

Analisi di Impatto

Comprendi gli effetti a catena delle modifiche al codice prima di apportarle.

Cos'è l'Analisi di Impatto?

L'analisi di impatto risponde alla domanda: "Se modifico questo file, cos'altro sarà interessato?"

Questo ti aiuta a:

  • Pianificare le modifiche più attentamente
  • Identificare i test necessari
  • Evitare rotture inaspettate
  • Stimare lo sforzo per le modifiche

Eseguire l'Analisi di Impatto

Interfaccia Web

  1. Seleziona un progetto
  2. Clicca su un file nella visualizzazione
  3. Clicca Analizza Impatto

CLI

> /analyze src/services/user.ts

API

curl -X POST https://api.archicore.io/api/v1/projects/:id/analyze \
-H "Authorization: Bearer TUA_API_KEY" \
-d '{"path": "src/services/user.ts"}'

Comprendere i Risultati

Analisi di Impatto per src/services/user.ts

╭─────────────────────────────────────────╮
│ Dipendenze Dirette (5) │
├─────────────────────────────────────────┤
│ → src/utils/crypto.ts │
│ → src/db/models/user.ts │
│ → src/config/auth.ts │
│ → src/types/user.ts │
│ → src/utils/validation.ts │
╰─────────────────────────────────────────╯

╭─────────────────────────────────────────╮
│ Dipendenti - Saranno Interessati (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 │
╰─────────────────────────────────────────╯

Livello di Rischio: MEDIO
Test Interessati: 2

Livelli di Impatto

LivelloDescrizioneAzione
BassoPochi dipendenti, modifica isolataProcedere con revisione standard
MedioPiù dipendenti, rischio moderatoTest approfonditi raccomandati
AltoMolti dipendenti, modulo centraleTest estesi, considerare rollout graduale
CriticoInteressa percorsi criticiRevisione extra, feature flag raccomandati

Simulare le Modifiche

Anteprima dell'impatto di una modifica proposta:

> /simulate
Descrivi la tua modifica: Aggiungere nuovo parametro a UserService.getUser()

Risultati della Simulazione:

File che necessitano aggiornamenti:
1. src/controllers/auth.ts:34 - chiama getUser()
2. src/controllers/profile.ts:12 - chiama getUser()
3. src/services/session.ts:45 - chiama getUser()

Test che necessitano aggiornamenti:
1. tests/user.test.ts - 5 casi di test chiamano getUser()
2. tests/auth.test.ts - 3 casi di test chiamano getUser()

Sforzo stimato: Medio (8 file, 15 punti di chiamata)

Best Practice

Prima di Apportare Modifiche

  1. Esegui l'analisi di impatto sui file che intendi modificare
  2. Rivedi la catena delle dipendenze - comprendi il raggio d'azione
  3. Identifica i test interessati - assicurati che vengano aggiornati
  4. Verifica le dipendenze circolari - amplificano l'impatto

Ridurre l'Impatto

  1. Usa le interfacce - Dipendi dalle astrazioni
  2. Applica i principi SOLID - La responsabilità singola limita l'impatto
  3. Disaccoppia i moduli - Riduci le dipendenze dirette
  4. Scrivi layer facade - Nascondi i dettagli di implementazione

Esempio: Refactoring Sicuro

// Prima: Dipendenza diretta
// Modificare User impatta tutti i consumatori
class UserController {
constructor(private userService: UserService) {}
}

// Dopo: Dipendenza da interfaccia
// Modificare l'implementazione di UserService non impatta i consumatori
interface IUserService {
getUser(id: string): Promise<User>;
}

class UserController {
constructor(private userService: IUserService) {}
}

Integrazione CI/CD

Aggiungi l'analisi di impatto alla tua pipeline:

# .gitlab-ci.yml
impact-analysis:
script:
- archicore analyze --changed-files
- if [ $IMPACT_LEVEL == "critical" ]; then
echo "Impatto critico rilevato - richiede revisione aggiuntiva";
exit 1;
fi