Por qué ast-grep
Algunas convenciones son estructurales: “nunca llames a esta función aquí”, “pasa siempre esta opción”. Un modelo puede detectarlas, pero también puede pasar una por alto o imaginar otra. Una regla de ast-grep compara el árbol sintáctico, así que una coincidencia es prueba. Un hallazgo que cita una regla que coincidió en la ejecución omite la verificación del modelo y se publica. El ejemplo es un servicio de checkout con una convención: los montos son centavos enteros manejados por el helperMoney, nunca floats.
Paso 1 — Escribe las reglas en el repositorio
Haz commit de un archivo de reglas en tu rama por defecto. Kodus lo lee de la rama de destino de cada pull request, así que un pull request no puede relajar las reglas con las que se verifica.rules/money.yml
message de cada regla es lo que el comentario cita como regla, así que escríbelo para quien lee el pull request.
Escribe también el razonamiento una vez en un doc, para los casos que un patrón no puede detectar:
docs/money.md
Paso 2 — Crea el agente
New agent → Templates → Blank, y luego:Name
Instructions
Paso 3 — Apúntalo a las reglas
En Tools → Advanced → Structural search (ast-grep rules), escribe la ruta en una sola línea:2 rules in rules/money.yml: no-parsefloat-amount, no-tofixed-amount. También puedes pegar el YAML inline en lugar de una ruta; las reglas viven entonces en el agente, no en el repositorio.
Paso 4 — Comentarios
Haz clic en Save.
Paso 5 — Try it
Ejecuta Try it en un pull request que agregue unparseFloat sobre un precio. El hallazgo queda kept, y su comentario cita la regla:
docs/money.md cita el doc en su lugar, y se descarta si la cita no está en el doc de la rama de destino.
Checklist
- Archivo de reglas con commit en la rama por defecto
- Cada regla tiene un
id, unaruley unmessagelegible - La ayuda del campo lista todas las reglas
- Los globs cubren solo el código al que aplica la convención
- Probado en un pull request con una violación conocida