Parque infantil | Tutorial | Documentos
GritQL é uma linguagem de consulta declarativa para pesquisar e modificar código-fonte.
Leia a documentação, o tutorial interativo ou execute grit --help
.
Instale a CLI do Grit:
curl -fsSL https://docs.grit.io/install | bash
Pesquise todas as suas chamadas console.log
colocando o padrão desejado entre crases:
grit apply '`console.log($_)`'
Substitua console.log
por winston.log
, usando =>
para criar reescritas:
grit apply '`console.log($msg)` => `winston.log($msg)`'
Salve o padrão em um arquivo grit.yaml
e exclua os casos de teste em uma cláusula where:
cat << 'EOF' > .grit/grit.yaml
patterns:
- name: use_winston
level: error
body: |
`console.log($msg)` => `winston.log($msg)` where {
$msg <: not within or { `it($_, $_)`, `test($_, $_)`, `describe($_, $_)` }
}
EOF
grit apply use_winston
Execute grit check
para impor seus padrões como lints personalizados.
grit check
console.log
, a menos que estejam dentro de um bloco try-catch `console.log($log)` => . where {
$log <: not within `try { $_ } catch { $_ }`
}
`$instance.oldMethod($args)` => `$instance.newMethod($args)` where {
$program <: contains `$instance = new TargetClass($_)`
}
Muitos outros exemplos podem ser encontrados na biblioteca padrão GritQL.
Os padrões podem ser combinados para criar consultas complexas, incluindo grandes refatoradores.
GritQL vem de nossas experiências na condução de refatorações e migrações em grande escala.
Normalmente, as migrações começam com um trabalho exploratório para descobrir o escopo do problema – geralmente usando buscas grep simples. É fácil começar, mas a maioria das migrações acaba acumulando requisitos adicionais, como garantir que os pacotes certos sejam importados e excluir casos que não tenham um caminho de migração viável.
Eventualmente, qualquer migração complexa acaba sendo um programa codemod completo escrito com uma ferramenta como jscodeshift. Isso traz seus próprios problemas:
GritQL é nossa tentativa de desenvolver um meio-termo poderoso:
$metavariables
para os buracos que você deseja representar.GritQL usa tree-sitter para todos os analisadores de linguagem e se beneficia muito do ecossistema Rust.
GritQL é lançado sob a licença do MIT.
Contribuições são bem-vindas. Para começar, confira as diretrizes de contribuição .
Você também pode se juntar a nós no Discord .