CLI viide
Greph sisaldab nelja käivitatavat faili. Kõik neli kasutavad sama mootorit; erinevus seisneb selles, millise liidese nad pakuvad.
| Binaarfail | Eesmärk |
|---|---|
greph |
Natiivne tekstiotsing, AST-otsing ja AST ümberkirjutamine |
greph-index |
Eelsoojendatud tekstiindeks, AST faktide indeks ja vahemällu salvestatud AST-otsing |
rg |
ripgrep-stiilis ühilduvusümbris |
sg |
ast-grep-stiilis ühilduvusümbris |
Näidetes kasutatakse kõikjal teed ./vendor/bin/<binary>, mis töötab koos Greph 0.2.3-ga või hilisema versiooniga, mis on sõltuvusena installitud. Kui töötate hoidla klooniga, asendage see väärtusega ./bin/<binary>.
greph
Natiivne tekstiotsing, AST-otsing ja AST ümberkirjutamine.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Kui teed ei määrata, otsitakse praegusest kataloogist.
Tekstirežiim
Vaikerežiim. Mustrid on PCRE2 regexid, kui pole määratud -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
Väljundvorming vastab grep -rn-i omale:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST-režiim
Aktiveeritakse suvandiga -p. Mustrid kirjutatakse tavalise PHP-ina, kasutades metavariablesid $VAR ja $$$VARIADIC. Täielikku mustrite grammatikat vaadake jaotisest Režiimid / AST-otsing.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Ümberkirjutusrežiim
Aktiveeritakse, kui kombineerida -p ja -r. Asendusmall kasutab samu metavariablesid mis otsingumuster; hõivatud sõlmed lisatakse nime järgi.
# 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
Suvandid
| Lipp | Tähendus |
|---|---|
-F |
Fikseeritud stringi otsing (regexita) |
-i |
Tõstutundetu sobitamine |
-w |
Terve sõna sobitamine |
-v |
Pööra sobitamine ümber |
-c |
Sobivuste arv failis |
-l |
Loetle ainult sobivate failide teed |
-L |
Loetle ainult mittesobivate failide teed |
-h |
Peida tekstirežiimis failinime eesliited |
-H |
Prindi tekstirežiimis alati failinime eesliited |
-n |
Kuva reanumbrid (vaikimisi: sees) |
-A N |
Kuva iga sobivuse järel N rida |
-B N |
Kuva iga sobivuse ees N rida |
-C N |
Kuva enne ja pärast iga sobivust N kontekstirida |
-m N |
Peata pärast N sobivust faili kohta |
-j N |
Kasuta N paralleeltöötlejat |
-p PATTERN |
AST-otsingu muster |
-r TEMPLATE |
AST ümberkirjutamise mall (vajab valikut -p) |
--glob GLOB |
Kaasa ainult failid, mille tee vastab GLOB-ile |
--type NAME |
Kaasa failitüübi alias (php, js, md, ...) |
--type-not NAME |
Välista failitüübi alias |
--lang NAME |
AST keel. Vaikimisi: php |
--json |
Väljasta JSON väljund |
--no-ignore |
Eira .gitignore ja .grephignore reegleid |
--hidden |
Kaasa peidetud failid |
--dry-run |
Kuva ümberkirjutused faile kirjutamata |
--interactive |
Kinnita iga ümberkirjutatud fail |
--help |
Kuva lühikasutusjuhend |
greph-index
Eelsoojendatud tekstiindeks, AST faktide indeks ja vahemällu salvestatud AST-otsing.
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...]
Tekstiindeks
# 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
Tekstiindeks on eelsoojendatud trigrammide ja identifikaatorite postituste hoidla. Vaikimisi asub see indekseeritud juures aadressil .greph-index/.
Indeksikogumid
Indeksikogumid muudavad korduvad mitme indeksiga töövood nimega manifestiks:
./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)' .
Vaikemanifesti fail on .greph-index-set.json. Iga kirje osutab juurele, režiimile ja elutsükli profiilile. set build ja set refresh töötavad lubatud kirjetega; set search käivitub valitud kirjete lõikes ja eemaldab kattuvad sobivused.
AST faktide indeks
./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 faktide indeks eraldab sõlmetaseme faktid (väljakutsed, eksemplarid, klassid, meetodid) päringutega kasutatavasse hoidlasse. Otsingud tehakse O(log n) faktivõtme alusel ja seejärel kontrollitakse lähtekoodi vastu. Vaikimisi salvestatakse aadressil .greph-ast-index/.
AST vahemälu
./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 vahemälu salvestab parsitud puud kettale, et otsingud saaksid parseri vahele jätta. Vaikimisi salvestatakse aadressil .greph-ast-cache/.
Suvandid
Tekstiotsingu suvandid vastavad lippude komplektile greph (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Lisalipud:
| Lipp | Tähendus |
|---|---|
--index-dir DIR |
Kasuta vaikeväärtusest erinevat eelsoojendatud indeksikataloogi. Mitme indeksi otsingu ja statistika jaoks korratav. |
--lifecycle PROFILE |
Koostamispoliitika: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Oportunistliku värskendamise faililävi |
--auto-refresh-max-bytes N |
Oportunistliku värskendamise baidilävi |
--manifest FILE |
Laadi indeksikogumi manifest. Vaikimisi: .greph-index-set.json |
--mode MODE |
Piira kogumi toimingud väärtustega text, ast-index või ast-cache |
--index NAME |
Piira kogumi toimingud nimega manifestikirjega. Korratav. |
--show-index-origin |
Lisa eelsoojendatud mitme indeksi või kogumi väljundile sobiva indeksikirje nimi |
--trace-plan |
Väljasta eelsoojendatud plaanuri diagnostika aadressile stderr |
--dry-refresh |
Režiimis stats näita, mida eelsoojendatud otsing teeks, ilma midagi muutmata |
--lang NAME |
AST keel otsingutele ast-index / ast-cache. Vaikimisi: php |
-j N, --jobs N |
AST-skannimise töölised |
-l, --files-with-matches |
Loetle ainult sobivate failide teed (AST-režiim) |
--strict-parse |
Ebaõnnestu parsingu vigade korral, mitte ära jäta neid vahele |
--fallback MODE |
Puuduva indeksi käitumine: fail (vaikimisi) või scan |
--help |
Kuva lühikasutusjuhend |
rg
ripgrep-stiilis ühilduvusümbris. Toetab sagedamini kasutatavaid ripgrep lippe. Kontrollitud funktsioonide loend on avaldatud funktsioonide maatriksis.
rg [options] pattern [path...]
rg --files [options] [path...]
Näited
./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" .
Toetatud suvandid
| Lipp | Tähendus |
|---|---|
-F, --fixed-strings |
Fikseeritud stringi otsing |
-i, --ignore-case |
Tõstutundetu otsing |
-w, --word-regexp |
Terve sõna otsing |
-v, --invert-match |
Pööra sobivused ümber |
-c, --count |
Loenda sobivaid ridu |
-l, --files-with-matches |
Loetle sobivad failid |
--files-without-match |
Loetle mittesobivad failid |
-I, --no-filename |
Peida failinime eesliited |
-H, --with-filename |
Prindi alati failinime eesliited |
-n, --line-number |
Kuva reanumbrid |
-A N, --after-context N |
Kuva iga sobivuse järel N rida |
-B N, --before-context N |
Kuva iga sobivuse ees N rida |
-C N, --context N |
Kuva N rida enne ja pärast iga sobivust |
-m N, --max-count N |
Peata pärast N sobivust faili kohta |
-j N, --threads N |
Kasuta N paralleeltöötlejat |
-e P, --regexp P |
Otsingumuster |
-L, --follow |
Järgi sümbollinke |
--glob GLOB |
Kaasa ainult failid, mille tee vastab GLOB-ile |
--type NAME |
Kaasa failitüüp |
--type-not NAME |
Välista failitüüp |
--json |
Väljasta ripgrep-stiilis JSON sündmused |
--no-ignore |
Eira .gitignore ja .grephignore reegleid |
--hidden |
Kaasa peidetud failid |
--files |
Loetle otsimise asemel kandidaatfailid |
--help |
Kuva lühikasutusjuhend |
sg
ast-grep-stiilis ühilduvusümbris. Toetab sagedamini kasutatavaid ast-grep lippe. Kontrollitud funktsioonide loend on avaldatud funktsioonide maatriksis.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run on kanooniline ast-grep-verb. scan ja rewrite on ainult ümbrise varjunimed, mis järgivad levinud kasutust. Ka paljas käivitus (sg --pattern ... .) toimib ühekordse otsinguna.
Näited
./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
Toetatud suvandid
| Lipp | Tähendus |
|---|---|
-p, --pattern PATTERN |
AST muster |
-r, --rewrite TEMPLATE |
Ümberkirjutamise mall |
-l, --lang NAME |
AST keel. Vaikimisi: php |
-j, --threads N |
Kasuta N paralleeltöötlejat |
-i, --interactive |
Kinnita iga ümberkirjutus |
-U, --update-all |
Rakenda ümberkirjutused kinnituseta |
--files-with-matches |
Prindi ainult sobivusi sisaldavate failide teed |
--json[=STYLE] |
Väljasta JSON väljund. STIIL = pretty, stream või compact |
--no-ignore [MODE] |
Eira hoidla eiramisreegleid |
--hidden |
Kaasa peidetud failid |
--glob GLOB, --globs GLOB |
Kaasa ainult failid, mille tee vastab GLOB-ile |
--type NAME |
Kaasa failitüüp |
--type-not NAME |
Välista failitüüp |
--dry-run |
Vaata ümberkirjutused üle faile kirjutamata |
--help |
Kuva lühikasutusjuhend |
Väljumiskoodid
Greph järgib programmi grep / ripgrep tavasid:
| Kood | Tähendus |
|---|---|
0 |
Leiti vähemalt üks sobivus (või ümberkirjutamisel muudeti vähemalt üht faili) |
1 |
Sobivusi ei leitud |
2 |
Kasutusviga või käitustõrge (vigased argumendid, puuduv indeks, parsingu viga režiimis --strict-parse) |