This commit is contained in:
Luiz Silva 2026-09-28 22:18:39 -03:00
parent f5abcec365
commit e7adba8fd8
84 changed files with 4222 additions and 2182 deletions

View file

@ -1,145 +0,0 @@
---
name: diagnosticar-code-smells
description: >
Análise sistemática de código para identificar code smells, violações SOLID
e oportunidades de aplicação de Design Patterns GoF.
scope: 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
```sh
# 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:
```markdown
# 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
- `@testes` notificado 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