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
- Para avaliar qualidade de um PR individual — use reviewing-logic-and-correctness.
- Para analisar fluxos de dados e dependências entre módulos — use dependency-mapping-and-decomposition.
- Quando o módulo tem menos de 500 linhas e poucas funções — a skill é projetada para módulos de complexidade significativa.
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: NTop 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.
Workflows que usam
Bundles que incluem