Liigu sisu juurde

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.

Shell
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.

Shell
# 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:

Text
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.

Shell
./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.

Shell
# 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.

Shell
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

Shell
# 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:

Shell
./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

Shell
./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

Shell
./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.

Shell
rg [options] pattern [path...]
rg --files [options] [path...]

Näited

Shell
./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.

Shell
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

Shell
./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)