--- 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 /**/*.ts wc -l /**/*.vue # Verificar cobertura de testes find -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 ` | | 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 salvo em `.agent/memoria/` ou entregue diretamente - Plano de ação priorizado gerado - `@ag-testes` notificado sobre trechos sem cobertura ## Referências - Persona: `agents/ag-refatorar/persona` - Rule: `agents/ag-refatorar/rules/solid-compliance` - Rule: `agents/ag-refatorar/rules/design-patterns-pragmatico` - Refactoring.Guru — https://refactoring.guru/pt-br/refactoring/smells