Referens för CLI
Greph innehåller fyra körbara filer. Alla fyra delar samma motor; skillnaden ligger i vilket gränssnitt de erbjuder.
| Binärfil | Syfte |
|---|---|
greph |
Inbyggd textsökning, AST-sökning och AST-omskrivning |
greph-index |
Uppvärmt textindex, AST-faktindex och cachad AST-sökning |
rg |
Kompatibilitetsomslag i ripgrep-stil |
sg |
Kompatibilitetsomslag i ast-grep-stil |
Alla sökvägar i exemplen använder ./vendor/bin/<binary>, som fungerar med Greph 0.2.3 eller senare installerade som ett beroende. Byt ut mot ./bin/<binary> om du arbetar från en klon av kodförrådet.
greph
Inbyggd textsökning, AST-sökning och AST-omskrivning.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Om en sökväg utelämnas genomsöks den aktuella katalogen.
Textläge
Standardläge. Mönster är PCRE2-regex om inte -F har angetts.
# 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
Utdataformatet matchar grep -rn:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST-läge
Aktiveras med -p. Mönster skrivs som vanlig PHP med metanamnvariablerna $VAR och $$$VARIADIC. Se Lägen / AST-sökning för den fullständiga grammatiken för mönster.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Omskrivningsläge
Aktiveras genom att kombinera -p med -r. Ersättningsmallen använder samma metanamnvariabler som sökmönstret; fångade noder infogas med namn.
# 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
Alternativ
| Flagga | Betydelse |
|---|---|
-F |
Sökning efter fast sträng (inget regex) |
-i |
Skiftlägesokänslig matchning |
-w |
Matchning av hela ord |
-v |
Invertera matchning |
-c |
Räkna matchningar per fil |
-l |
Visa endast sökvägar till filer med matchningar |
-L |
Visa endast sökvägar till filer utan matchningar |
-h |
Dölj filnamnsprefix i textläge |
-H |
Visa alltid filnamnsprefix i textläge |
-n |
Visa radnummer (standard: på) |
-A N |
Visa N rader efter varje matchning |
-B N |
Visa N rader före varje matchning |
-C N |
Visa N kontextrader före och efter varje matchning |
-m N |
Avsluta efter N matchningar per fil |
-j N |
Använd N parallella arbetare |
-p PATTERN |
AST-sökmönster |
-r TEMPLATE |
AST-omskrivningsmall (kräver -p) |
--glob GLOB |
Inkludera endast filer vars sökvägar matchar GLOB |
--type NAME |
Inkludera ett filtypsalias (php, js, md, ...) |
--type-not NAME |
Exkludera ett filtypsalias |
--lang NAME |
AST-språk. Standard: php |
--json |
Skriv utdata i formatet JSON |
--no-ignore |
Ignorera reglerna .gitignore och .grephignore |
--hidden |
Inkludera dolda filer |
--dry-run |
Visa omskrivningar utan att skriva till filer |
--interactive |
Bekräfta varje omskriven fil |
--help |
Visa kort hjälp om användningen |
greph-index
Uppvärmt textindex, AST-faktindex och cachad AST-sökning.
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...]
Textindex
# 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
Textindexet är ett uppvärmt index med trigram och identifierarposteringar. Som standard finns det i .greph-index/ i den indexerade rotkatalogen.
Indexuppsättningar
Indexuppsättningar omvandlar återkommande arbetsflöden med flera index till ett namngivet 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)' .
Standardmanifestfilen är .greph-index-set.json. Varje post pekar på en rot, ett läge och en livscykelprofil. set build och set refresh används för de aktiverade posterna; set search söker igenom de valda posterna och tar bort överlappande matchningar.
AST-faktindex
./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-faktindexet extraherar fakta på nodnivå (anrop, instansieringar, klasser, metoder) till ett sökbart lager. Uppslag görs med O(log n) på faktanyckeln och verifieras sedan mot källkoden. Lagringsplatsen är .greph-ast-index/ som standard.
AST-cache
./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-cachen lagrar parsade träd på disk, så att sökningar kan hoppa över parsern helt. Lagringsplatsen är .greph-ast-cache/ som standard.
Alternativ
Alternativen för textsökning matchar flaggorna i greph (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Ytterligare flaggor:
| Flagga | Betydelse |
|---|---|
--index-dir DIR |
Använd en annan katalog för uppvärmt index än standardkatalogen. Kan upprepas vid sökning i och statistik för flera index. |
--lifecycle PROFILE |
Byggpolicy: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Tröskel för filer vid opportunistisk uppdatering |
--auto-refresh-max-bytes N |
Tröskel för byte vid opportunistisk uppdatering |
--manifest FILE |
Läs in ett manifest för indexuppsättning. Standard: .greph-index-set.json |
--mode MODE |
Begränsa åtgärder för uppsättningen till text, ast-index eller ast-cache |
--index NAME |
Begränsa åtgärder för uppsättningen till en namngiven manifestpost. Kan upprepas. |
--show-index-origin |
Lägg till namnet på den matchande indexposten som prefix för utdata från sökning i eller uppsättning av flera uppvärmda index |
--trace-plan |
Skriv ut diagnostik för den uppvärmda planeraren till stderr |
--dry-refresh |
I stats: rapportera vad en uppvärmd sökning skulle göra utan att ändra något |
--lang NAME |
AST-språk för sökningar med ast-index / ast-cache. Standard: php |
-j N, --jobs N |
Arbetare för AST-genomsökningar |
-l, --files-with-matches |
Visa endast sökvägar till filer med matchningar (AST-läge) |
--strict-parse |
Avsluta vid parseringsfel i stället för att hoppa över dem |
--fallback MODE |
Hantering när index saknas: fail (standard) eller scan |
--help |
Visa kort hjälp om användningen |
rg
Kompatibilitetsomslag i ripgrep-stil. Stöder de vanligaste flaggorna i ripgrep. De verifierade alternativen finns i funktionsmatrisen.
rg [options] pattern [path...]
rg --files [options] [path...]
Exempel
./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" .
Alternativ som stöds
| Flagga | Betydelse |
|---|---|
-F, --fixed-strings |
Sökning efter fast sträng |
-i, --ignore-case |
Skiftlägesokänslig sökning |
-w, --word-regexp |
Sökning efter hela ord |
-v, --invert-match |
Invertera matchningar |
-c, --count |
Räkna matchande rader |
-l, --files-with-matches |
Visa filer med matchningar |
--files-without-match |
Visa filer utan matchningar |
-I, --no-filename |
Dölj filnamnsprefix |
-H, --with-filename |
Visa alltid filnamnsprefix |
-n, --line-number |
Visa radnummer |
-A N, --after-context N |
Visa N rader efter varje matchning |
-B N, --before-context N |
Visa N rader före varje matchning |
-C N, --context N |
Visa N rader före och efter varje matchning |
-m N, --max-count N |
Avsluta efter N matchningar per fil |
-j N, --threads N |
Använd N parallella arbetare |
-e P, --regexp P |
Sökmönster |
-L, --follow |
Följ symboliska länkar |
--glob GLOB |
Inkludera endast filer vars sökvägar matchar GLOB |
--type NAME |
Inkludera en filtyp |
--type-not NAME |
Exkludera en filtyp |
--json |
Skriv händelser i ripgrep-stil i JSON |
--no-ignore |
Ignorera reglerna .gitignore och .grephignore |
--hidden |
Inkludera dolda filer |
--files |
Visa kandidater bland filer i stället för att söka |
--help |
Visa kort hjälp om användningen |
sg
Kompatibilitetsomslag i ast-grep-stil. Stöder de vanligaste flaggorna i ast-grep. De verifierade alternativen finns i funktionsmatrisen.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run är det kanoniska ast-grep-kommandot. scan och rewrite är alias som endast finns i omslaget och speglar vanligt bruk. Det går även att köra kommandot utan argument (sg --pattern ... .) för en engångssökning.
Exempel
./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
Alternativ som stöds
| Flagga | Betydelse |
|---|---|
-p, --pattern PATTERN |
AST-mönster |
-r, --rewrite TEMPLATE |
Omskrivningsmall |
-l, --lang NAME |
AST-språk. Standard: php |
-j, --threads N |
Använd N parallella arbetare |
-i, --interactive |
Bekräfta varje omskrivning |
-U, --update-all |
Tillämpa omskrivningar utan bekräftelse |
--files-with-matches |
Visa endast sökvägar till filer med matchningar |
--json[=STYLE] |
Skriv utdata i formatet JSON. FORMAT = pretty, stream eller compact |
--no-ignore [MODE] |
Ignorera kodförrådets ignoreringsregler |
--hidden |
Inkludera dolda filer |
--glob GLOB, --globs GLOB |
Inkludera endast filer vars sökvägar matchar GLOB |
--type NAME |
Inkludera en filtyp |
--type-not NAME |
Exkludera en filtyp |
--dry-run |
Förhandsgranska omskrivningar utan att skriva till filer |
--help |
Visa kort hjälp om användningen |
Avslutningskoder
Greph följer konventionerna för grep / ripgrep:
| Kod | Betydelse |
|---|---|
0 |
Minst en matchning hittades (eller, vid omskrivningar, ändrades minst en fil) |
1 |
Inga matchningar hittades |
2 |
Användningsfel eller körtidsfel (felaktiga argument, saknat index, parseringsfel i läget --strict-parse) |