Saltearse al contenido

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:

Ventana de terminal
$ 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 │ }

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.

Además de las funciones incorporadas de Grit, Biome admite actualmente una función adicional:

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, information, warning, y error. Por defecto, se utilizaerror.