Linter Plugins
Ce contenu n’est pas encore disponible dans votre langue.
Biome Linter supports GritQL plugins. Currently, these plugins allow you to match specific code patterns and register customized diagnostic messages for them.
Here is an example of a plugin that reports on all usages of Object.assign()
:
`$fn($args)` where { $fn <: `Object.assign`, register_diagnostic( span = $fn, message = "Prefer object spread instead of `Object.assign()`" )}
You can put a GritQL snippet in a file anywhere in your project, but be mindful
you use the .grit
extension. Then, you can simply enable it as a plugin with
the following configuration:
{ "plugins": ["./path-to-plugin.grit"]}
The plugin will now be enabled on all supported files the linter runs on. You
can see its results when running biome lint
or biome check
. For example:
$ 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 │ }
Target Languages
Section titled Target LanguagesA GritQL snippet always attempts to match against a given target language. If no target language is specified, JavaScript or one of its super languages is assumed.
If you want to use a different target language, you must specify it explicitly.
For example, here is a CSS plugin to report any selector that sets a color
outside the allowed .color-*
classes:
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." )}
We currently do not support other target languages than JavaScript and CSS.
Plugin API
Section titled Plugin APIIn addition to Grit’s built-in functions, Biome currently supports one extra function:
register_diagnostic()
Section titled register_diagnostic()Registers a diagnostic to be reported whenever the pattern matches.
Supports three arguments:
span
(required): The syntax node to attach the diagnostic to. This is typically a variable that you matched within a code snippet.message
(required): The message to show with the diagnostic.severity
: The severity of the diagnostic. Allowed values are:hint
,information
,warning
, anderror
. By default,error
is used.