SkillEngenhariaDiagnostica

Auditoria de Complexidade Ciclomática

Analisa complexidade ciclomática, tamanho de funções, acoplamento e hotspots para quantificar a dívida técnica de um módulo.

Ações
PerfilDev
ProfundidadeAlta
Idiomapt-BR
Objetivo

Em uma frase.

Quantificar a complexidade de um módulo através de métricas objetivas — complexidade ciclomática, tamanho de unidades, acoplamento afferente/efferente e churn rate — produzindo um mapa de hotspots que indica onde a dívida técnica está mais concentrada e mais arriscada.

Aplicação

Quando
faz sentido.

Usar
  • Como Etapa 3 do workflow de Diagnóstico de Dívida Técnica Crítica, após mapear dependências.
  • Quando o time precisa de evidências quantitativas para justificar investimento em refatoração.
  • Quando há disputa sobre quais partes do código são realmente complexas vs. apenas "antigas".
  • Antes de decidir entre refatorar e reescrever — métricas ajudam a calibrar a decisão.
Não usar
Prompt

Instruções
para a IA.

Passo 1 — Calcular complexidade ciclomática por função

Para cada função ou método relevante do módulo, calcular a complexidade ciclomática (número de caminhos independentes de execução):

**Classificação de severidade:**

- **1–10:** Simples, baixo risco. Sem ação necessária. - **11–20:** Moderado. Candidato a simplificação. - **21–50:** Alto. Refatoração recomendada — difícil de testar e manter. - **>50:** Crítico. Refatoração urgente — praticamente impossível de entender e testar completamente.

Listar todas as funções com complexidade ≥ 11, ordenadas por severidade decrescente.

Passo 2 — Identificar unidades de código excessivamente grandes

Métricas de tamanho que indicam problemas:

- **Funções com mais de 50 linhas:** Quase sempre fazem mais de uma coisa.

- **Arquivos com mais de 300 linhas:** Provavelmente misturam responsabilidades. - **Classes com mais de 10 métodos públicos:** Interface muito ampla, difícil de usar e testar. - **Funções com mais de 5 parâmetros:** Sinal de God Function ou abstração inadequada. - **Blocos condicionais aninhados além de 3 níveis:** Fluxo de controle difícil de seguir.

Para cada violação, documentar: arquivo, nome da unidade, métrica violada e valor.

Passo 3 — Calcular métricas de acoplamento

Para os componentes já mapeados na skill anterior, quantificar:

- **Acoplamento afferente (Ca):** Quantos outros componentes dependem deste? (Alta Ca = mudança arriscada)

- **Acoplamento efferente (Ce):** De quantos outros componentes este depende? (Alto Ce = frágil e instável) - **Instabilidade (I = Ce / (Ca + Ce)):** Próximo de 1 = muito instável. Próximo de 0 = muito estável mas difícil de mudar.

Componentes com Ca alto E Ce alto são os mais problemáticos — são centrais e frágeis ao mesmo tempo.

Passo 4 — Identificar hotspots por cruzamento de métricas

Hotspots são os pontos onde complexidade alta se cruza com outra dimensão de risco:

- **Complexidade × Churn:** Funções complexas que mudam frequentemente. São onde bugs mais aparecem.

- **Complexidade × Acoplamento:** Funções complexas com muitos consumidores. Mudá-las é arriscado. - **Tamanho × Falta de testes:** Arquivos grandes sem cobertura de testes. Refatorar sem rede de segurança.

Produzir uma lista de hotspots ordenada por risco combinado.

Passo 5 — Produzir relatório de complexidade

Consolidar em um documento estruturado:

```

## Relatório de Complexidade — [Nome do Módulo]

Sumário Executivo

- Total de funções analisadas: N - Funções com complexidade ≥ 11: N (X%) - Funções com complexidade ≥ 21: N (X%) - Arquivos com mais de 300 linhas: N - Componentes com instabilidade > 0.8: N

Top 10 Funções por Complexidade

| Arquivo | Função | CC | Linhas | Parâmetros | Churn (6m) | |---------|--------|----|--------|------------|------------| | ... | ... | ...| ... | ... | ... |

Top 5 Hotspots

| Arquivo/Função | Complexidade | Churn | Acoplamento | Testes | Risco | |----------------|-------------|-------|-------------|--------|-------| | ... | ... | ... | ... | ... | ... |

Métricas de Acoplamento por Componente

| Componente | Ca | Ce | Instabilidade | |------------|----|----|---------------| | ... | ...| ...| ... |

Recomendação Inicial

- Refatorar: [componentes onde o esforço vale a pena] - Isolar: [componentes que devem ser encapsulados antes de mudar] - Não tocar agora: [componentes estáveis apesar de complexos] ```

---
Constelação

Onde
ela vive.