Pular para o conteúdo principal

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

  1. Selecione um projeto
  2. Clique em um arquivo na visualização
  3. 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ívelDescriçãoAção
BaixoPoucos dependentes, mudança isoladaProsseguir com revisão padrão
MédioMúltiplos dependentes, risco moderadoTestes completos recomendados
AltoMuitos dependentes, módulo centralTestes extensivos, considerar rollout faseado
CríticoAfeta caminhos críticosRevisã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

  1. Execute análise de impacto nos arquivos que planeja modificar
  2. Revise a cadeia de dependências - entenda o raio de impacto
  3. Identifique testes afetados - garanta que sejam atualizados
  4. Verifique dependências circulares - elas amplificam o impacto

Reduzindo Impacto

  1. Use interfaces - Dependa de abstrações
  2. Aplique princípios SOLID - Responsabilidade única limita o impacto
  3. Desacople módulos - Reduza dependências diretas
  4. 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