← ClaudeAtlas

metricslisted

Métricas por função ADVPL/TLPP (complexidade ciclomática McCabe + LOC + nesting + fan-out + params) para fontes Protheus — Universo 4 Feature B, v0.6.0+
JoniPraia/plugadvpl · ★ 12 · Data & Documents · score 72
Install: claude install-skill JoniPraia/plugadvpl
# `/plugadvpl:metrics` **Killer feature do v0.6.0** (Universo 4 — Qualidade & Métricas). Responde **"por onde começar num refactor?"** via ranking de funções por complexidade. ## Uso ``` /plugadvpl:metrics [arquivo] [--min-cc N] [--min-loc N] [--sort cc|loc|nesting|calls|params] ``` ## Métricas extraídas (cacheadas em `fonte_metrics`) | Campo | Significado | |-------|-------------| | `loc` | Linhas de código (`linha_fim - linha_inicio + 1`) | | `cc` | Complexidade ciclomática **McCabe** (1 + paths de decisão: If/ElseIf/While/For/Case/Catch/IIf) | | `nesting` | Profundidade máxima de blocos aninhados | | `n_calls_out` | Fan-out: quantas funções essa função chama | | `params_count` | Número de parâmetros da assinatura | | `has_doc` | `sim` se função tem header Protheus.doc | ## Exemplos ```bash # Top-10 funções mais complexas do projeto /plugadvpl:metrics --sort cc # Funções gigantes (> 300 linhas) — candidatas refactor /plugadvpl:metrics --min-loc 300 --sort loc # CC alta + sem documentação = piores casos /plugadvpl:metrics --min-cc 15 # Métricas de UM fonte específico /plugadvpl:metrics ABCCOM01.prw # Fan-out alto = "função faz muita coisa" /plugadvpl:metrics --sort calls ``` ## Convenção McCabe (decisões que contam CC) - ✅ `If` / `ElseIf` (cada um +1) - ❌ `Else` (não adiciona path) - ✅ `While` / `For` (cada loop +1) - ✅ `Case` dentro de `Do Case` (cada cláusula +1; `Do Case` em si não conta — equivale ao base) - ❌ `OtherWise