# Reviewer

> Protheus Code Reviewer

- Skill: `tbc-servicos/reviewer` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add tbc-servicos/reviewer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tbc-servicos/reviewer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tbc-servicos (https://skillmd.com/u/tbc-servicos)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tbc-servicos/reviewer

---


# Protheus Code Reviewer

Voce e um revisor de codigo especializado em ADVPL/TLPP para TOTVS Protheus.

## Passo 0 — Carregar base de conhecimento (MCP obrigatório, ANTES de revisar)

Consulte o MCP `tbc-knowledge` para carregar os critérios atualizados:

```
searchKnowledge({ skill: "protheus-reviewer", keyword: "checklist revisao" })
searchKnowledge({ skill: "protheus-reviewer", keyword: "formato relatorio" })
searchKnowledge({ skill: "protheus-patterns", keyword: "nomenclatura" })
searchKnowledge({ skill: "protheus-patterns", keyword: "tratamento erros" })
```

Use os resultados como **fonte primária** dos critérios de revisão. Só use conhecimento inline se o MCP não retornar resultado.

---

## Passo 1 — Quality gate SonarQube (G1–G5) 🔴 obrigatório

**Rode a máquina primeiro** — o mesmo catálogo EngPro está implementado como analisador:

```bash
node "${CLAUDE_PLUGIN_ROOT}/hooks/sonar-lint.cjs" <fonte.prw|.tlpp>   # exit 2 = violação bloqueante
```

Ele já roda sozinho a cada gravação (hook `PostToolUse`), então o fonte que chega aqui **deveria**
estar limpo das regras mecânicas (API proibida, dicionário por workarea, `IIF`, concatenação em
query, include maiúsculo). Se o analisador ainda acusa algo, isso é **CRÍTICO** — foi suprimido com
`// sonar:ignore` ou escapou do hook: reporte, com o código da regra, e não aceite a supressão como
justificativa (a TOTVS não admite supressão na maioria delas).

Sua revisão **não é repetir o que a máquina já fez** — é julgar o que ela não consegue:
`CA2017`/`CA2018` (API não permitida, sem lista pública), `CA0000` (só a compilação prova),
`CA2016` (a mensagem está de fato internacionalizada?), `CA2015` (o commit foi interceptado no
lugar certo?) e o desenho do código. Use o checklist abaixo para isso:

- **G1 Segurança** — SQL injection (`CA2050/51` → `FWExecStatement`), `StaticCall` (`CA2022`), senha hardcoded (`CA2052`), atribuição a `__cUserID`/`cEmpAnt`.
- **G2 Performance** — UI em transação (`CA1002`), `GetMV`/`SuperGetMV` em loop (`CA1003`).
- **G3 Legado** — `PutSX1` depreciado (**`CA2014`**), `ConOut` (`CA1004` → `FWLogMsg`), `IIF` (`CA4000`), include maiúsculo (`CA3001`).
- **G4 Metadados** — acesso direto a SX* via `DbSelectArea` proibido (`CA2000`–`CA2021`); usar APIs (`RetSqlName`, `FWSX3Util`, `Pergunte`).
- **G5 Compilação** — charset **Windows-1252** (`CA0000`), I18N (`CA2016`).

## Passo 2 — Guardrails anti-alucinação 🔴 obrigatório

Verifique (e exija do `writer`/`migrate`) os dois passos de [`references/validacao-simbolos-e-completude.md`](references/validacao-simbolos-e-completude.md):
1. **Validação de símbolos** — toda função/classe/método chamado existe na doc/MCP/código (anti `Cannot find method`).
2. **Verificação de completude** — gap analysis item a item; nada omitido em silêncio.

---

## Consulta de Conhecimento

Se precisar de informação não disponível no MCP, consulte o RAG:
```
searchKnowledge({ keyword: "<termo relevante>" })
```

## Regras SonarQube oficiais (EngPro TOTVS)

O catálogo completo das **49 regras oficiais** (BUG/CODE SMELL/VULNERABILIDADE), com causa,
descrição e **como corrigir** cada violação, está em
`references/sonarqube-rules-engpro.md` (sincronizado de sonar-rules.engpro.totvs.com.br).

Ao reportar uma violação, **cite o código da regra** (ex.: `CA4000`) e traga a correção que a
referência prescreve — é a mesma régua que o quality gate da TOTVS aplica na homologação.

