CLI uzziņu rokasgrāmata
Greph ietver četrus izpildāmos failus. Visiem četriem ir viens un tas pats dzinis; atšķiras tikai to piedāvātā saskarne.
| Binārais fails | Mērķis |
|---|---|
greph |
Vietējā teksta meklēšana, AST meklēšana un AST pārrakstīšana |
greph-index |
Uzsildīts teksta indekss, AST faktu indekss un kešota AST meklēšana |
rg |
Ar ripgrep saderīgs iesaiņotājs |
sg |
Ar ast-grep saderīgs iesaiņotājs |
Visos piemēros izmantoti ceļi ./vendor/bin/<binary> formātā. Tie darbojas, ja Greph 0.2.3 ir instalēts kā atkarība vai vēlāk tiek instalēts. Ja strādājat ar repozitorija klonu, aizstājiet to ar ./bin/<binary>.
greph
Vietējā teksta meklēšana, AST meklēšana un AST pārrakstīšana.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Ja ceļš nav norādīts, meklēšana tiek veikta pašreizējā mapē.
Teksta režīms
Noklusējuma režīms. Raksti ir PCRE2 regulārās izteiksmes, ja vien nav iestatīts -F.
# Regex search
./vendor/bin/greph "function\s+\w+" src
# Fixed-string search
./vendor/bin/greph -F "function" src
# Case-insensitive whole-word with two lines of context
./vendor/bin/greph -F -i -w -C 2 "function" src
Izvades formāts atbilst grep -rn:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST režīms
Aktivizē ar -p. Raksti tiek veidoti kā parasts PHP, izmantojot metavariablos $VAR un $$$VARIADIC. Pilnu raksta gramatiku skatiet sadaļā AST režīmi / AST meklēšana.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Pārrakstīšanas režīms
Aktivizē, apvienojot -p ar -r. Aizvietošanas veidne izmanto tos pašus metavariablos kā meklēšanas raksts; uztvertie mezgli tiek ievietoti pēc nosaukuma.
# Preview only
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src
# Apply
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' src
# Confirm each file before writing
./vendor/bin/greph -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src
Opcijas
| Karodziņš | Nozīme |
|---|---|
-F |
Meklēšana pēc precīzas virknes (bez regex) |
-i |
Meklēšana, neņemot vērā reģistru |
-w |
Meklēšana pēc pilna vārda |
-v |
Apgriezt atbilstības nosacījumu |
-c |
Saskaitīt atbilstības katrā failā |
-l |
Norādīt tikai atbilstošo failu ceļus |
-L |
Norādīt tikai neatbilstošo failu ceļus |
-h |
Teksta režīmā nerādīt failu nosaukumu prefiksus |
-H |
Teksta režīmā vienmēr rādīt failu nosaukumu prefiksus |
-n |
Rādīt rindu numurus (pēc noklusējuma ieslēgts) |
-A N |
Rādīt N rindas pēc katras atbilstības |
-B N |
Rādīt N rindas pirms katras atbilstības |
-C N |
Rādīt N konteksta rindas pirms un pēc katras atbilstības |
-m N |
Pārtraukt pēc N atbilstībām katrā failā |
-j N |
Izmantot N paralēlos darbplūsmu izpildītājus |
-p PATTERN |
AST meklēšanas raksts |
-r TEMPLATE |
AST pārrakstīšanas veidne (nepieciešams -p) |
--glob GLOB |
Iekļaut tikai failus, kuru ceļi atbilst GLOB |
--type NAME |
Iekļaut faila tipa aizstājvārdu (php, js, md, ...) |
--type-not NAME |
Izslēgt faila tipa aizstājvārdu |
--lang NAME |
AST valoda. Noklusējums: php |
--json |
Izvadīt JSON formāta izvadi |
--no-ignore |
Ignorēt .gitignore un .grephignore noteikumus |
--hidden |
Iekļaut slēptos failus |
--dry-run |
Parādīt pārrakstījumus, nemainot failus |
--interactive |
Apstiprināt katru failu, kurā veikta pārrakstīšana |
--help |
Rādīt lietošanas informāciju iekļautajā saskarnē |
greph-index
Uzsildīts teksta indekss, AST faktu indekss un kešota AST meklēšana.
greph-index build [path] [--index-dir DIR]
greph-index refresh [path] [--index-dir DIR]
greph-index search [options] pattern [path...]
greph-index set build [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set refresh [manifest] [--manifest FILE] [--mode MODE] [--index NAME...]
greph-index set stats [manifest] [--manifest FILE] [--mode MODE] [--index NAME...] [--dry-refresh]
greph-index set search [options] pattern [path...]
greph-index ast-index build [path] [--index-dir DIR]
greph-index ast-index refresh [path] [--index-dir DIR]
greph-index ast-index search [options] pattern [path...]
greph-index ast-cache build [path] [--index-dir DIR]
greph-index ast-cache refresh [path] [--index-dir DIR]
greph-index ast-cache search [options] pattern [path...]
Teksta indekss
# Build (full)
./vendor/bin/greph-index build .
# Build with lifecycle policy
./vendor/bin/greph-index build . \
--lifecycle opportunistic-refresh \
--auto-refresh-max-files 32 \
--auto-refresh-max-bytes 1048576
# Refresh (incremental: added, updated, deleted, unchanged)
./vendor/bin/greph-index refresh .
# Query
./vendor/bin/greph-index search -F "function" .
./vendor/bin/greph-index search -i -w "function" .
./vendor/bin/greph-index search -c "function" .
./vendor/bin/greph-index search --trace-plan -F "function" .
./vendor/bin/greph-index search -F "function" . \
--index-dir core/.greph-index \
--index-dir plugins/demo/.greph-index \
--show-index-origin
Teksta indekss ir uzsildīta trigrammu un identifikatoru ierakstu krātuve. Pēc noklusējuma tā atrodas mapē .greph-index/ indeksētajā saknes mapē.
Indeksu kopas
Indeksu kopas ļauj atkārtotas vairāku indeksu darbplūsmas aprakstīt nosauktā manifestā:
./vendor/bin/greph-index set build
./vendor/bin/greph-index set stats --dry-refresh
./vendor/bin/greph-index set search --show-index-origin -F "function" .
./vendor/bin/greph-index set search --mode ast-index 'new $CLASS()' .
./vendor/bin/greph-index set search --mode ast-cache 'array($$$ITEMS)' .
Noklusējuma manifesta fails ir .greph-index-set.json. Katrs ieraksts norāda saknes mapi, režīmu un dzīves cikla profilu. set build un set refresh darbojas ar iespējotajiem ierakstiem; set search vienlaikus apstrādā atlasītos ierakstus un izslēdz dublējošās atbilstības.
AST faktu indekss
./vendor/bin/greph-index ast-index build .
./vendor/bin/greph-index ast-index refresh .
./vendor/bin/greph-index ast-index search 'new $CLASS()' src
./vendor/bin/greph-index ast-index search --trace-plan 'new $CLASS()' src
./vendor/bin/greph-index ast-index search 'new $CLASS()' . \
--index-dir core/.greph-ast-index \
--index-dir plugins/demo/.greph-ast-index \
--show-index-origin
AST faktu indekss izgūst mezglu līmeņa faktus (izsaukumus, instancēšanas, klases, metodes) un saglabā tos vaicājumiem pieejamā krātuvē. Vispirms tiek veikta O(log n) meklēšana pēc fakta atslēgas, pēc tam rezultāti tiek pārbaudīti, salīdzinot tos ar avotu. Pēc noklusējuma dati tiek glabāti mapē .greph-ast-index/.
AST kešatmiņa
./vendor/bin/greph-index ast-cache build .
./vendor/bin/greph-index ast-cache refresh .
./vendor/bin/greph-index ast-cache search 'array($$$ITEMS)' src
./vendor/bin/greph-index ast-cache search --trace-plan 'array($$$ITEMS)' src
AST kešatmiņa saglabā diskā parsētos kokus, lai meklēšanas laikā varētu pilnībā izlaist parsētāju. Pēc noklusējuma dati tiek glabāti mapē .greph-ast-cache/.
Opcijas
Teksta meklēšanas opcijas atbilst greph karodziņu kopai (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Papildu karodziņi:
| Karodziņš | Nozīme |
|---|---|
--index-dir DIR |
Izmantot uzsildītu indeksu mapē, kas nav noklusējuma mape. Atkārtojams vairāku indeksu meklēšanai un statistikai. |
--lifecycle PROFILE |
Veidošanas politika: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Failu skaita slieksnis neregulārai atsvaidzināšanai |
--auto-refresh-max-bytes N |
Baitu slieksnis neregulārai atsvaidzināšanai |
--manifest FILE |
Ielādēt indeksu kopas manifestu. Noklusējums: .greph-index-set.json |
--mode MODE |
Ierobežot kopas darbības līdz text, ast-index vai ast-cache |
--index NAME |
Ierobežot kopas darbības līdz nosauktam manifesta ierakstam. Atkārtojams. |
--show-index-origin |
Vairāku uzsildītu indeksu vai kopas izvadei pievienot prefiksu ar atbilstošā indeksa ieraksta nosaukumu |
--trace-plan |
Izvadīt uzsildītā plānotāja diagnostikas informāciju uz stderr |
--dry-refresh |
Ar stats ziņot, ko veiktu uzsildīta meklēšana, neko nemainot |
--lang NAME |
AST valoda ast-index / ast-cache meklēšanai. Noklusējums: php |
-j N, --jobs N |
Darbplūsmu izpildītāji AST skenēšanai |
-l, --files-with-matches |
Norādīt tikai atbilstošo failu ceļus (AST režīms) |
--strict-parse |
Kļūdas gadījumā neizlaist failus ar parsēšanas kļūdām |
--fallback MODE |
Rīcība, ja trūkst indeksa: fail (noklusējums) vai scan |
--help |
Rādīt lietošanas informāciju iekļautajā saskarnē |
rg
ripgrep tipa saderības iesaiņotājs. Atbalsta visbiežāk lietotos ripgrep karodziņus. Pārbaudītā funkcionalitāte publicēta sadaļā funkciju matrica.
rg [options] pattern [path...]
rg --files [options] [path...]
Piemēri
./vendor/bin/rg -F "function" src
./vendor/bin/rg --json -F "function" src
./vendor/bin/rg --files src
./vendor/bin/rg --files --type php .
./vendor/bin/rg --type-not js -F "function" .
Atbalstītās opcijas
| Karodziņš | Nozīme |
|---|---|
-F, --fixed-strings |
Meklēšana pēc precīzas virknes |
-i, --ignore-case |
Meklēšana, neņemot vērā reģistru |
-w, --word-regexp |
Meklēšana pēc pilna vārda |
-v, --invert-match |
Apgriezt atbilstības nosacījumu |
-c, --count |
Saskaitīt atbilstošās rindas |
-l, --files-with-matches |
Norādīt atbilstošos failus |
--files-without-match |
Norādīt neatbilstošos failus |
-I, --no-filename |
Nerādīt failu nosaukumu prefiksus |
-H, --with-filename |
Vienmēr rādīt failu nosaukumu prefiksus |
-n, --line-number |
Rādīt rindu numurus |
-A N, --after-context N |
Rādīt N rindas pēc katras atbilstības |
-B N, --before-context N |
Rādīt N rindas pirms katras atbilstības |
-C N, --context N |
Rādīt N rindas pirms un pēc katras atbilstības |
-m N, --max-count N |
Pārtraukt pēc N atbilstībām katrā failā |
-j N, --threads N |
Izmantot N paralēlos darbplūsmu izpildītājus |
-e P, --regexp P |
Meklēšanas raksts |
-L, --follow |
Sekot simboliskajām saitēm |
--glob GLOB |
Iekļaut tikai failus, kuru ceļi atbilst GLOB |
--type NAME |
Iekļaut faila tipu |
--type-not NAME |
Izslēgt faila tipu |
--json |
Izvadīt ripgrep tipa JSON notikumus |
--no-ignore |
Ignorēt .gitignore un .grephignore noteikumus |
--hidden |
Iekļaut slēptos failus |
--files |
Meklēšanas vietā uzskaitīt kandidātfailus |
--help |
Rādīt lietošanas informāciju iekļautajā saskarnē |
sg
ast-grep tipa saderības iesaiņotājs. Atbalsta visbiežāk lietotos ast-grep karodziņus. Pārbaudītā funkcionalitāte publicēta sadaļā funkciju matrica.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run ir kanoniskā ast-grep komanda. scan un rewrite ir tikai iesaiņotāja aizstājvārdi, kas atbilst ierastajam lietojumam. Var izmantot arī vienkāršu izsaukumu (sg --pattern ... .), lai veiktu vienreizēju meklēšanu.
Piemēri
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src/App.php
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src/App.php
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src/App.php
./vendor/bin/sg scan -p 'array($$$ITEMS)' src/App.php
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src/App.php
Atbalstītās opcijas
| Karodziņš | Nozīme |
|---|---|
-p, --pattern PATTERN |
AST raksts |
-r, --rewrite TEMPLATE |
Pārrakstīšanas veidne |
-l, --lang NAME |
AST valoda. Noklusējums: php |
-j, --threads N |
Izmantot N paralēlos darbplūsmu izpildītājus |
-i, --interactive |
Apstiprināt katru pārrakstīšanu |
-U, --update-all |
Veikt pārrakstīšanu bez apstiprinājuma |
--files-with-matches |
Norādīt tikai to failu ceļus, kuros ir atbilstības |
--json[=STYLE] |
Izvadīt JSON izvadi. STILS = pretty, stream vai compact |
--no-ignore [MODE] |
Ignorēt repozitorija ignorēšanas noteikumus |
--hidden |
Iekļaut slēptos failus |
--glob GLOB, --globs GLOB |
Iekļaut tikai failus, kuru ceļi atbilst GLOB |
--type NAME |
Iekļaut faila tipu |
--type-not NAME |
Izslēgt faila tipu |
--dry-run |
Priekšskatīt pārrakstījumus, nemainot failus |
--help |
Rādīt lietošanas informāciju iekļautajā saskarnē |
Izejas kodi
Greph ievēro grep / ripgrep konvencijas:
| Kods | Nozīme |
|---|---|
0 |
Atrasta vismaz viena atbilstība (vai pārrakstīšanas gadījumā mainīts vismaz viens fails) |
1 |
Nav atrasta neviena atbilstība |
2 |
Lietošanas kļūda vai izpildlaika kļūme (nepareizi argumenti, trūkst indeksa, parsēšanas kļūda režīmā --strict-parse) |