Przejdź do głównej zawartości

Wtyczki lintera

Linter Biome obsługuje wtyczki GritQL. Obecnie te wtyczki pozwalają dopasowywać określone wzorce kodu i rejestrować dostosowane komunikaty diagnostyczne dla nich.

Oto przykład wtyczki, która raportuje wszystkie użycia Object.assign():

`$fn($args)` where {
$fn <: `Object.assign`,
register_diagnostic(
span = $fn,
message = "Prefer object spread instead of `Object.assign()`"
)
}

Możesz umieścić fragment GritQL w pliku w dowolnym miejscu w swoim projekcie, ale pamiętaj, aby użyć rozszerzenia .grit. Następnie możesz po prostu włączyć go jako wtyczkę za pomocą następującej konfiguracji:

{
"plugins": ["./path-to-plugin.grit"]
}

Wtyczka będzie teraz włączona dla wszystkich obsługiwanych plików, na których działa linter. Możesz zobaczyć jej wyniki podczas uruchamiania biome lint lub biome check. Na przykład:

Okno terminala
$ 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 │ }

Fragment GritQL zawsze próbuje dopasować się do określonego języka docelowego. Jeśli nie określono języka docelowego, zakłada się JavaScript lub jeden z jego super języków.

Jeśli chcesz użyć innego języka docelowego, musisz określić go jawnie. Na przykład, oto wtyczka CSS do raportowania każdego selektora, który ustawia kolor poza dozwolonymi klasami .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."
)
}

Obecnie nie obsługujemy innych języków docelowych niż JavaScript i CSS.

Oprócz wbudowanych funkcji Grit, Biome obecnie obsługuje jedną dodatkową funkcję:

Rejestruje diagnostykę, która ma być raportowana za każdym razem, gdy wzorzec pasuje.

Obsługuje trzy argumenty:

  • span (wymagany): Węzeł składniowy, do którego ma być dołączona diagnostyka. Jest to zazwyczaj zmienna, którą dopasowałeś w fragmencie kodu.
  • message (wymagany): Komunikat do wyświetlenia z diagnostyką.
  • severity: Poziom ważności diagnostyki. Dozwolone wartości to: hint, info, warn i error. Domyślnie używany jest error.