Por que ast-grep
Algumas convenções são estruturais: “nunca chame esta função aqui”, “sempre passe esta opção”. Um modelo consegue perceber, mas também pode deixar passar ou imaginar um caso. Uma regra do ast-grep casa com a árvore sintática, então um match é prova. Um apontamento que cita uma regra que bateu na execução pula a checagem pelo modelo e é postado. O exemplo é um serviço de checkout com uma convenção: valores são centavos inteiros tratados pelo helperMoney, nunca floats.
Passo 1 — Escreva as regras no repositório
Faça commit de um arquivo de regras na branch padrão. A Kodus lê esse arquivo da branch de destino de cada pull request, então um pull request não consegue afrouxar as regras que o conferem.rules/money.yml
message de cada regra é o que o comentário cita como regra, então escreva pensando em quem lê o pull request.
Registre o raciocínio num doc também, para os casos que um padrão não pega:
docs/money.md
Passo 2 — Crie o agente
New agent → Templates → Blank, e depois:Name
Instructions
Passo 3 — Aponte para as regras
Em Tools → Advanced → Structural search (ast-grep rules), informe o caminho numa única linha:2 rules in rules/money.yml: no-parsefloat-amount, no-tofixed-amount. Você também pode colar o YAML direto no campo em vez do caminho; aí as regras ficam no agente, e não no repositório.
Passo 4 — Comentários
Clique em Save.
Passo 5 — Try it
Rode o Try it num pull request que adiciona umparseFloat num preço. O apontamento fica como kept, e o comentário cita a regra:
docs/money.md cita o doc, e é descartado se a citação não estiver no doc na branch de destino.
Checklist
- Arquivo de regras commitado na branch padrão
- Cada regra tem
id,rulee ummessagelegível - A dica do campo lista todas as regras
- Os globs cobrem só o código a que a convenção se aplica
- Testado num pull request com uma violação conhecida