Saltearse al contenido

GritQL

GritQL es un lenguaje de consulta para realizar búsquedas estructurales en el código fuente. Esto significa que las trivialidades como los espacios en blanco o incluso el tipo de comillas utilizadas en las cadena de caracteres se ignorarán en la búsqueda. Además, ofrece muchas funciones que te permiten consultar la estructura sintáctica como fragmentos, concordancia, anidamiento y variables.

GritQL es código abierto y creado por Grit.io.

Biome utiliza GritQL con dos fines:

Las consultas GritQL funcionan a través de patrones. El patrón más común que verás es el fragmento de código, que parece un código fuente normal envuelto en barras invertidas:

`console.log('Hello, world!')`

Este patrón coincidirá con cualquier llamada a console.log() a la que se le pase la cadena de caracteres 'Hello, world!'. Pero como GritQL hace coincidencias estructurales, no se preocupa por los detalles de formato. Esto también coincide:

console.log("Hello, world!");

Y esto también ( nota el cambio en las comillas):

console.log("Hello, world!");

Las consultas GritQL también pueden tener variables. Lo siguiente coincidirá con cualquier llamada a console.log() independientemente del mensaje pasado:

`console.log($message)`

Esto también coincidirá con cualquiera de los métodos del objeto console:

`console.$method($message)`

El mismo nombre de variable puede aparecer varias veces en un mismo fragmento:

`$fn && $fn()`

Esto coincidirá con foo && foo(), e incluso con foo.bar && foo.bar(), pero no con foo && bar().

Puedes añadir condiciones a los patrones utilizando el operador where. Este operador es comúnmente utilizado junto con el operador match, <::

`console.$method($message)` where {
$method <: `log`
}

Esta consulta es idéntica al patrón console.log($mensaje) que vimos anteriormente, pero se vuelve rápidamente más interesante cuando añadimos otros operadores a la mezcla:

`console.$method($message)` where {
$method <: or { `log`, `info`, `warn`, `error` }
}

Para más información sobre GritQL y su sintaxis, consulta la página oficial de Documentación del lenguaje GritQL.

Ten en cuenta que Biome no es compatible con todas las funciones de Grit (todavía).

Se está trabajando activamente en el soporte de GritQL en Biome. Muchas cosas ya funcionan, pero aún se esperan errores y faltan algunas características.

Para obtener una descripción detallada de las funciones de GritQL que son compatibles y las que aún están en curso, consulta el tema de GitHub: GitHub issue: https://github.com/biomejs/biome/issues/2582.

También disponemos de una RFC detallada que orienta nuestros esfuerzos en materia de plugins: https://github.com/biomejs/biome/discussions/1762

tl;dr: Estamos trabajando en el soporte de plugins, que pueden ser tanto puros GritQL o plugins JS/TS que usan GritQL para seleccionar el código sobre el que desean operar. operar. Permanece atento.