4 KiB
4 KiB
| name | description | scope |
|---|---|---|
| diagnosticar-code-smells | Análise sistemática de código para identificar code smells, violações SOLID e oportunidades de aplicação de Design Patterns GoF. | local |
Skill: Diagnosticar Code Smells
Objetivo
Analisar um arquivo, módulo ou pacote para produzir um relatório de saúde estrutural com:
- Code smells identificados
- Violações SOLID detectadas
- Design Patterns recomendados
- Prioridade de cada refatoração
Pré-condições
- Código existente para analisar (arquivo, pasta ou pacote)
- Acesso de leitura ao código e seus testes
Etapas
1. Coletar Contexto
# Identificar tamanho e estrutura
wc -l <arquivo_ou_pasta>/**/*.ts
wc -l <arquivo_ou_pasta>/**/*.vue
# Verificar cobertura de testes
find <pasta_testes> -name "*.spec.ts" -o -name "*.test.ts"
2. Verificar Smells de Volume
Para cada arquivo, verificar:
| Verificação | Comando/Ação |
|---|---|
| Linhas > 250 | wc -l <arquivo> |
| Funções > 30 linhas | Ler e contar manualmente |
| Parâmetros > 3 por função | grep_search por assinaturas |
| Imports excessivos (> 10) | Contar linhas de import |
3. Verificar Smells de Acoplamento
| Verificação | Indicador |
|---|---|
| Feature Envy | Função usa outro. mais que this. ou dados locais |
| Intimidade Inapropriada | Acesso a internos de outro módulo (não-exportados) |
| Cadeia de Mensagens | a.b.c.d com 3+ níveis |
| Import circular | Módulo A importa B que importa A |
4. Verificar Conformidade SOLID
Para cada princípio, aplicar o checklist:
□ S — Este arquivo tem apenas 1 razão para mudar?
□ O — Posso adicionar nova variação sem editar este arquivo?
□ L — Subtipos são substituíveis pelo tipo base?
□ I — Interfaces são específicas para cada consumidor?
□ D — Lógica de negócio depende de abstrações, não de implementações?
5. Mapear Oportunidades de Padrão
Cruzar smells detectados com o guia de decisão:
switch crescente → Strategy
criação condicional → Factory Method
construção complexa → Builder
comportamento por estado → State
pipeline de validações → Chain of Responsibility
comportamento adicional → Decorator
interface incompatível → Adapter
subsistema complexo → Facade
notificação de mudanças → Observer
6. Gerar Relatório
Produzir relatório no formato:
# Diagnóstico de Code Smells — [nome do módulo]
## Resumo
- **Arquivos analisados:** N
- **Smells encontrados:** N
- **Violações SOLID:** N
- **Padrões recomendados:** N
## Smells Detectados
### 🔴 Crítico
| Arquivo | Smell | Linha(s) | Ação Recomendada |
|---------|-------|----------|-----------------|
### 🟡 Moderado
| Arquivo | Smell | Linha(s) | Ação Recomendada |
|---------|-------|----------|-----------------|
### 🟢 Baixo
| Arquivo | Smell | Linha(s) | Ação Recomendada |
|---------|-------|----------|-----------------|
## Violações SOLID
| Princípio | Arquivo | Descrição | Severidade |
|-----------|---------|-----------|------------|
## Design Patterns Recomendados
| Problema | Padrão | Justificativa | Esforço |
|----------|--------|---------------|---------|
## Plano de Ação (priorizado)
1. [Crítico] ...
2. [Crítico] ...
3. [Moderado] ...
Critérios de Severidade
| Severidade | Critério |
|---|---|
| 🔴 Crítico | Violação SOLID + acoplamento alto + afeta 3+ arquivos |
| 🟡 Moderado | Code smell isolado + afeta 1-2 arquivos |
| 🟢 Baixo | Melhoria estética + sem impacto funcional |
Pós-condições
- Relatório registrado na Memória Azteca (
./memory/) ou entregue diretamente - Plano de ação priorizado gerado
@testesnotificado sobre trechos sem cobertura
Referências
- Persona:
agents/refatorar/persona - Rule:
agents/refatorar/rules/solid-compliance - Rule:
agents/refatorar/rules/design-patterns-pragmatico - Refactoring.Guru — https://refactoring.guru/pt-br/refactoring/smells