Análise de Impacto
Entenda os efeitos em cascata das mudanças de código antes de fazê-las.
O que é Análise de Impacto?
A análise de impacto responde à pergunta: "Se eu alterar este arquivo, o que mais será afetado?"
Isso ajuda você a:
- Planejar mudanças mais cuidadosamente
- Identificar testes necessários
- Evitar quebras inesperadas
- Estimar esforço para mudanças
Executando Análise de Impacto
Interface Web
- Selecione um projeto
- Clique em um arquivo na visualização
- Clique em Analisar Impacto
CLI
> /analyze src/services/user.ts
API
curl -X POST https://api.archicore.io/api/v1/projects/:id/analyze \
-H "Authorization: Bearer SUA_API_KEY" \
-d '{"path": "src/services/user.ts"}'
Entendendo os Resultados
Análise de Impacto para src/services/user.ts
╭─────────────────────────────────────────╮
│ Dependências Diretas (5) │
├─────────────────────────────────────────┤
│ → src/utils/crypto.ts │
│ → src/db/models/user.ts │
│ → src/config/auth.ts │
│ → src/types/user.ts │
│ → src/utils/validation.ts │
╰─────────────────────────────────────────╯
╭─────────────────────────────────────────╮
│ Dependentes - Serão Afetados (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 │
╰─────────────────────────────────────────╯
Nível de Risco: MÉDIO
Testes Afetados: 2
Níveis de Impacto
| Nível | Descrição | Ação |
|---|---|---|
| Baixo | Poucos dependentes, mudança isolada | Prosseguir com revisão padrão |
| Médio | Múltiplos dependentes, risco moderado | Testes completos recomendados |
| Alto | Muitos dependentes, módulo central | Testes extensivos, considerar rollout faseado |
| Crítico | Afeta caminhos críticos | Revisão extra, feature flags recomendados |
Simulando Mudanças
Visualize o impacto de uma mudança proposta:
> /simulate
Descreva sua mudança: Adicionar novo parâmetro a UserService.getUser()
Resultados da Simulação:
Arquivos que precisam de atualizações:
1. src/controllers/auth.ts:34 - chama getUser()
2. src/controllers/profile.ts:12 - chama getUser()
3. src/services/session.ts:45 - chama getUser()
Testes que precisam de atualizações:
1. tests/user.test.ts - 5 casos de teste chamam getUser()
2. tests/auth.test.ts - 3 casos de teste chamam getUser()
Esforço estimado: Médio (8 arquivos, 15 pontos de chamada)
Melhores Práticas
Antes de Fazer Mudanças
- Execute análise de impacto nos arquivos que planeja modificar
- Revise a cadeia de dependências - entenda o raio de impacto
- Identifique testes afetados - garanta que sejam atualizados
- Verifique dependências circulares - elas amplificam o impacto
Reduzindo Impacto
- Use interfaces - Dependa de abstrações
- Aplique princípios SOLID - Responsabilidade única limita o impacto
- Desacople módulos - Reduza dependências diretas
- Escreva camadas facade - Esconda detalhes de implementação
Exemplo: Refatoração Segura
// Antes: Dependência direta
// Alterar User afeta todos os consumidores
class UserController {
constructor(private userService: UserService) {}
}
// Depois: Dependência de interface
// Alterar implementação de UserService não afeta consumidores
interface IUserService {
getUser(id: string): Promise<User>;
}
class UserController {
constructor(private userService: IUserService) {}
}
Integração CI/CD
Adicione análise de impacto ao seu pipeline:
# .gitlab-ci.yml
impact-analysis:
script:
- archicore analyze --changed-files
- if [ $IMPACT_LEVEL == "critical" ]; then
echo "Impacto crítico detectado - requer revisão adicional";
exit 1;
fi