Plugins de linter
Biome Linter soporta plugins GritQL. Actualmente, estos plugins permiten ajustar patrones de código específicos y registrar mensajes de diagnóstico personalizados para ellos.
Este es un ejemplo de un plugin que informa de todos los usos de Object.assign()
:
`$fn($args)` where { $fn <: `Object.assign`, register_diagnostic( span = $fn, message = "Prefer object spread instead of `Object.assign()`" )}
Puedes poner un fragmento GritQL en un archivo en cualquier parte de tu proyecto, pero ten cuidado
de usar la extensión .grit
. Luego, puedes simplemente habilitarlo como un plugin con
la siguiente configuración:
{ "plugins": ["./ruta-al-plugin.grit"]}
El plugin estará ahora habilitado en todos los archivos soportados en los que se ejecute el linter. Puedes
ver sus resultados al ejecutar biome lint
o biome check
. Por ejemplo:
$ biome lint/packages/tailwindcss-config-analyzer/src/introspect.ts:12:17 plugin ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Prefer object spread instead of `Object.assign()`
10 │ function createContextFromConfig(config: Partial<Config>) { 11 │ return createContext( > 12 │ resolveConfig(Object.assign({}, DEFAULT_CONFIG, config)), │ ^^^^^^^^^^^^^ 13 │ ); 14 │ }
Lenguas de objetivo
Sección titulada «Lenguas de objetivo»Un fragmento GritQL siempre intenta coincidir con un idioma de destino determinado. Si no se especifica ningún idioma de destino, se asume JavaScript o uno de sus superlenguajes.
Si deseas utilizar una lengua de destino diferente, debes especificarlo explícitamente.
Por ejemplo, aquí hay un plugin CSS para informar de cualquier selector que establezca un
color fuera de las clases permitidas .color-*
.:
language css;
`$selector { $props }` where { $props <: contains `color: $color` as $rule, not $selector <: r"\.color-.*", register_diagnostic( span = $rule, message = "Don't set explicit colors. Use `.color-*` classes instead." )}
Actualmente no admitimos más lenguajes de destino que JavaScript y CSS.
API de plugins
Sección titulada «API de plugins»Además de las funciones incorporadas de Grit, Biome admite actualmente una función adicional:
register_diagnostic()
Sección titulada «register_diagnostic()»Registra un diagnóstico que se notificará siempre que el patrón coincida.
Apoya tres argumentos:
span
(obligatorio): El nodo sintáctico al que adjuntar el diagnóstico. Se trata normalmente de una variable que se empareja dentro de un fragmento de código.message
(obligatorio): El mensaje a mostrar con el diagnóstico.severity
: La gravedad del diagnóstico. Los valores permitidos son:hint
,info
,warn
, yerror
. Por defecto, se utilizaerror
.