Spielplatz | Anleitung | Dokumente
GritQL ist eine deklarative Abfragesprache zum Suchen und Ändern von Quellcode.
Lesen Sie die Dokumentation, das interaktive Tutorial oder führen Sie grit --help
aus.
Installieren Sie die Grit-CLI:
curl -fsSL https://docs.grit.io/install | bash
Suchen Sie nach allen Ihren console.log
Aufrufen, indem Sie das gewünschte Muster in Backticks einfügen:
grit apply '`console.log($_)`'
Ersetzen Sie console.log
durch winston.log
und verwenden Sie =>
, um Umschreibungen zu erstellen:
grit apply '`console.log($msg)` => `winston.log($msg)`'
Speichern Sie das Muster in einer grit.yaml
Datei und schließen Sie Testfälle in einer where-Klausel aus:
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
Führen Sie grit check
durch, um Ihre Muster als benutzerdefinierte Flusen durchzusetzen.
grit check
console.log
Aufrufe, es sei denn, sie befinden sich innerhalb eines Try-Catch-Blocks `console.log($log)` => . where {
$log <: not within `try { $_ } catch { $_ }`
}
`$instance.oldMethod($args)` => `$instance.newMethod($args)` where {
$program <: contains `$instance = new TargetClass($_)`
}
Viele weitere Beispiele finden Sie in der GritQL-Standardbibliothek.
Muster können kombiniert werden, um komplexe Abfragen zu erstellen, einschließlich großer Refaktoren.
GritQL basiert auf unseren Erfahrungen mit der Durchführung groß angelegter Refaktoren und Migrationen.
Normalerweise beginnen Migrationen mit Sondierungsarbeiten, um den Umfang des Problems herauszufinden – oft mithilfe einfacher Grep-Suchen. Der Einstieg ist einfach, aber bei den meisten Migrationen häufen sich zusätzliche Anforderungen an, z. B. die Sicherstellung, dass die richtigen Pakete importiert werden, und das Ausschließen von Fällen, für die es keinen praktikablen Migrationspfad gibt.
Letztendlich ist jede komplexe Migration ein vollständiges Codemod-Programm, das mit einem Tool wie jscodeshift geschrieben wurde. Dies bringt seine eigenen Probleme mit sich:
GritQL ist unser Versuch, einen leistungsstarken Mittelweg zu entwickeln:
$metavariables
für Löcher, die Sie darstellen möchten.GritQL verwendet Tree-Sitter für alle Sprachparser und profitiert stark vom Rust-Ökosystem.
GritQL wird unter der MIT-Lizenz veröffentlicht.
Beiträge sind willkommen. Sehen Sie sich zunächst die Beitragsrichtlinien an.
Sie können uns auch auf Discord beitreten.