Definir thresholds objetivos de qualidade estrutural para apoiar:
- implementacao;
- revisao;
- quality gate;
- controle de risco de manutencao.
Este arquivo define os thresholds e sinais de risco estrutural usados em implementacao, revisao e gate.
Todos os thresholds numericos devem existir apenas aqui.
Outros arquivos devem referenciar metrics.md, sem duplicar tabelas.
- Ideal: faixa recomendada.
- Toleravel: aceitavel com observacao.
- Maximo: limite operacional; exige justificativa.
- Critico: risco estrutural alto; exige acao imediata.
- Metricas sao sinais operacionais, nao dogma.
- Coesao semantica vale mais que reducao cega de tamanho.
- Acumulo de alertas aumenta risco estrutural.
- Faixa critica exige acao, contencao ou excecao explicita.
- Excecao sem nome e rastreabilidade e invalida.
| Metrica | Ideal | Toleravel | Maximo | Critico |
|---|---|---|---|---|
| Linhas por arquivo | <=150 | 151-250 | 251-400 | >400 |
| Caracteres por linha | <=88 | 89-100 | 101-120 | >120 |
| Imports por arquivo | 3-12 | 13-20 | 21-30 | >30 |
| Estruturas primarias por arquivo | 1 | 2 | 3 | >=4 |
| Funcoes por arquivo | 1-7 | 8-12 | 13-20 | >20 |
| Exports por arquivo | 1 principal + 2 secundarios | <=5 | 6-8 | >8 |
| Linhas por funcao | 5-20 | 21-35 | 36-50 | >50 |
| Parametros por funcao | 0-2 | 3 | 4 | >=5 |
| Profundidade de nesting | 0-2 | 3 | 4 | >=5 |
| Branches por funcao | <=3 | 4-5 | 6-8 | >8 |
| Linhas por classe | <=120 | 121-200 | 201-300 | >300 |
| Metodos por classe | 1-7 | 8-12 | 13-20 | >20 |
| Propriedades por classe | <=5 | 6-8 | 9-12 | >12 |
| Metodos publicos por classe | 1-5 | 6-8 | 9-12 | >12 |
- Ideal: forma de retorno estavel e previsivel.
- Toleravel: pequena variacao controlada por tipo/estado explicito.
- Maximo: variacao frequente, mas documentada.
- Critico: retorno inconsistente e nao modelado.
- Ideal: side effects explicitos e esperados.
- Toleravel: side effect identificado, mas com visibilidade parcial.
- Maximo: multiplos side effects descobriveis apenas por leitura profunda.
- Critico: side effect oculto em unidade aparentemente pura.
- Ideal: sem mistura de dominio/aplicacao/infra.
- Toleravel: acoplamento pontual e justificavel.
- Maximo: mistura recorrente em modulo sensivel.
- Critico: violacao estrutural com impacto de manutencao.
- Ideal: uma responsabilidade clara.
- Toleravel: uma principal com suporte estritamente relacionado.
- Maximo: duas responsabilidades visiveis.
- Critico: tres ou mais responsabilidades no mesmo corpo.
- Ideal: comentarios pontuais para contexto nao-obvio.
- Toleravel: comentarios adicionais sem mascarar problema de design.
- Maximo: comentario excessivo para explicar codigo confuso.
- Critico: dependencia de comentario para entender fluxo basico.
Um arquivo e scanavel quando o revisor encontra rapido:
- imports;
- contratos;
- fluxo principal;
- side effects;
- exports.
Classificacao sugerida:
- Healthy:
- sem metrica critica;
- no maximo 2 metricas em toleravel.
- Attention:
- maximo 1 metrica em maximo;
- varias em toleravel.
- Limit:
- 2 ou mais metricas em maximo;
- risco crescente de quebra de coesao.
- Critical:
- qualquer metrica em critico sem justificativa;
- ou combinacao de maximo + side effects ocultos + mistura de camadas.
- Arquivo amplo demais: linhas altas + imports altos + exports altos.
- Fluxo dificil de manter: funcao longa + nesting alto + branches altos.
- Decaimento de fronteira: mistura de camadas + side effect oculto.
Aceitaveis quando justificadas:
- codigo gerado;
- migrations;
- snapshots;
- schemas gerados;
- mapas estaticos declarativos;
- compatibility shim;
- contencao temporaria de legado em refatoracao controlada.
Mesmo em excecao, manter:
- identificacao clara;
- naming coerente;
- escopo contido;
- rastreabilidade na task.
- Advisory:
- melhorias em faixa ideal e scanabilidade.
- Warning:
- repeticao de toleravel;
- entrada em maximo.
- Blocking:
- qualquer critico sem justificativa;
- side effect oculto em contexto sensivel;
- mistura de camadas em modulo critico.
validation-rules.mdusa maximo/critico como criterio de bloqueio tecnico.review-checklist.mdusametrics.mdcomo tabela unica de referencia.execution-policy.mdreferencia estas bandas para decidir split/refactor/justificativa.
Uso por perfil:
- Dev: detectar drift cedo e corrigir antes do review.
- Reviewer: justificar feedback por threshold e risco composto.
- AI agent: gerar/refatorar mirando ideal-toleravel e evitar maximo sem justificativa.
- Gate/arquitetura: bloquear critico recorrente e monitorar reincidencia por modulo.
Metrica so e valida quando protege clareza, coesao, previsibilidade de contrato e fronteira arquitetural.