CLI Başvurusu
Greph dört yürütülebilir dosya sunar. Dördü de aynı altyapıyı paylaşır; fark, sundukları arayüzdedir.
| İkili dosya | Amaç |
|---|---|
greph |
Yerel metin araması, AST araması ve AST yeniden yazma |
greph-index |
Hazır durumdaki metin dizini, AST olgu dizini ve önbelleğe alınmış AST araması |
rg |
ripgrep tarzı uyumluluk wrapper'ı |
sg |
ast-grep tarzı uyumluluk wrapper'ı |
Örneklerdeki tüm yollar, Greph 0.2.3 ile çalışan veya bağımlılık olarak sonradan yüklenen ./vendor/bin/<binary> değerini kullanır. Depoyu klonladıysanız bunun yerine ./bin/<binary> değerini kullanın.
greph
Yerel metin araması, AST araması ve AST yeniden yazma.
greph [options] pattern [path...]
greph -p pattern [options] [path...]
greph -p pattern -r replacement [options] [path...]
Bir yol belirtilmezse geçerli dizinde arama yapılır.
Metin modu
Varsayılan moddur. -F ayarlanmadıkça desenler PCRE2 regex'leridir.
# 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
Çıktı biçimi grep -rn ile eşleşir:
src/Greph.php:31:final class Greph
src/Greph.php:36: public static function walk(...
AST modu
-p ile etkinleştirilir. Desenler, $VAR ve $$$VARIADIC metavariables içeren sıradan PHP ile yazılır. Desen söz diziminin tamamı için Modlar / AST Araması bölümüne bakın.
./vendor/bin/greph -p 'new $CLASS()' src
./vendor/bin/greph -p '$obj->$method($$$ARGS)' src
./vendor/bin/greph -p 'function $name($$$PARAMS): void {}' src
Yeniden yazma modu
-p ile -r birlikte kullanılarak etkinleştirilir. Değiştirme şablonu, arama deseniyle aynı metavariables öğelerini kullanır; yakalanan düğümler adlarına göre içeri eklenir.
# 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
Seçenekler
| Bayrak | Anlamı |
|---|---|
-F |
Sabit metin araması (regex yok) |
-i |
Büyük/küçük harfe duyarsız eşleştirme |
-w |
Tam sözcük eşleştirmesi |
-v |
Eşleşmeyi tersine çevirir |
-c |
Dosya başına eşleşme sayısını verir |
-l |
Yalnızca eşleşen dosya yollarını listeler |
-L |
Yalnızca eşleşmeyen dosya yollarını listeler |
-h |
Metin modunda dosya adı öneklerini gizler |
-H |
Metin modunda dosya adı öneklerini her zaman yazdırır |
-n |
Satır numaralarını gösterir (varsayılan: açık) |
-A N |
Her eşleşmeden sonraki N satırı gösterir |
-B N |
Her eşleşmeden önceki N satırı gösterir |
-C N |
Her eşleşmenin öncesindeki ve sonrasındaki N bağlam satırını gösterir |
-m N |
Dosya başına N eşleşmeden sonra durur |
-j N |
N paralel worker kullanır |
-p PATTERN |
AST arama deseni |
-r TEMPLATE |
AST yeniden yazma şablonu (-p gerektirir) |
--glob GLOB |
Yalnızca yolları GLOB ile eşleşen dosyaları dahil eder |
--type NAME |
Bir dosya türü takma adını dahil eder (php, js, md, ...) |
--type-not NAME |
Bir dosya türü takma adını hariç tutar |
--lang NAME |
AST dili. Varsayılan: php |
--json |
JSON çıktısı üretir |
--no-ignore |
.gitignore ve .grephignore kurallarını yok sayar |
--hidden |
Gizli dosyaları dahil eder |
--dry-run |
Yeniden yazma işlemlerini dosyalara yazmadan yazdırır |
--interactive |
Yeniden yazılan her dosyayı onaylar |
--help |
Satır içi kullanımı gösterir |
greph-index
Hazır durumdaki metin dizini, AST olgu dizini ve önbelleğe alınmış AST araması.
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...]
Metin dizini
# 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
Metin dizini, hazır durumdaki bir trigram + tanımlayıcı ters dizin deposudur. Varsayılan olarak dizinlenen kökte .greph-index/ konumunda bulunur.
Dizin kümeleri
Dizin kümeleri, yinelenen çoklu dizin iş akışlarını adlandırılmış bir manifestoya dönüştürür:
./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)' .
Varsayılan manifesto dosyası .greph-index-set.json değeridir. Her girdi bir köke, moda ve yaşam döngüsü profiline işaret eder. set build ve set refresh etkin girdiler üzerinde çalışır; set search seçili girdilerde paralel işlem yapar ve örtüşen eşleşmeleri tekilleştirir.
AST olgu dizini
./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 olgu dizini, sorgulanabilir bir depoya düğüm düzeyindeki olguları (çağrılar, örnek oluşturmalar, sınıflar, yöntemler) çıkarır. Aramalar önce olgu anahtarına göre O(log n) yapılır, ardından kaynak üzerinde doğrulanır. Varsayılan olarak .greph-ast-index/ konumunda saklanır.
AST önbelleği
./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 önbelleği, aramaların ayrıştırıcıyı tamamen atlaması için ayrıştırılmış ağaçları diskte saklar. Varsayılan olarak .greph-ast-cache/ konumunda saklanır.
Seçenekler
Metin arama seçenekleri, greph bayrak kümesiyle eşleşir (-F, -i, -w, -v, -c, -l, -L, -A, -B, -C, -m, --glob, --type, --type-not, --json, --no-ignore, --hidden).
Ek bayraklar:
| Bayrak | Anlamı |
|---|---|
--index-dir DIR |
Varsayılan olmayan hazır durumdaki bir dizin dizini kullanır. Çoklu dizin araması ve istatistikler için tekrarlanabilir. |
--lifecycle PROFILE |
Oluşturma ilkesi: static, manual-refresh, opportunistic-refresh, strict-stale-check |
--auto-refresh-max-files N |
Fırsatçı yenileme için dosya eşiği |
--auto-refresh-max-bytes N |
Fırsatçı yenileme için bayt eşiği |
--manifest FILE |
Bir dizin kümesi manifestosu yükler. Varsayılan: .greph-index-set.json |
--mode MODE |
Küme işlemlerini text, ast-index veya ast-cache ile sınırlar |
--index NAME |
Küme işlemlerini adlandırılmış bir manifesto girdisiyle sınırlar. Tekrarlanabilir. |
--show-index-origin |
Hazır durumdaki çoklu dizin veya küme çıktısının başına eşleşen dizin girdi adını ekler |
--trace-plan |
Hazır durumdaki planlayıcı tanılamalarını stderr konumuna iletir |
--dry-refresh |
stats içinde, hiçbir şeyi değiştirmeden hazır durumdaki aramanın ne yapacağını bildirir |
--lang NAME |
ast-index / ast-cache aramaları için AST dili. Varsayılan: php |
-j N, --jobs N |
AST taramaları için worker sayısı |
-l, --files-with-matches |
Yalnızca eşleşen dosya yollarını listeler (AST modu) |
--strict-parse |
Hataları atlamak yerine ayrıştırma hatalarında başarısız olur |
--fallback MODE |
Dizin yoksa yapılacak işlem: fail (varsayılan) veya scan |
--help |
Satır içi kullanımı gösterir |
rg
ripgrep tarzı uyumluluk wrapper'ı. En yaygın kullanılan ripgrep bayraklarını destekler. Doğrulanmış özellikler özellik matrisinde yayımlanır.
rg [options] pattern [path...]
rg --files [options] [path...]
Örnekler
./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" .
Desteklenen seçenekler
| Bayrak | Anlamı |
|---|---|
-F, --fixed-strings |
Sabit dize araması |
-i, --ignore-case |
Büyük/küçük harfe duyarsız arama |
-w, --word-regexp |
Tam sözcük araması |
-v, --invert-match |
Eşleşmeleri tersine çevir |
-c, --count |
Eşleşen satırları say |
-l, --files-with-matches |
Eşleşen dosyaları listele |
--files-without-match |
Eşleşmeyen dosyaları listele |
-I, --no-filename |
Dosya adı öneklerini gizle |
-H, --with-filename |
Dosya adı öneklerini her zaman yazdır |
-n, --line-number |
Satır numaralarını göster |
-A N, --after-context N |
Her eşleşmeden sonraki N satırı göster |
-B N, --before-context N |
Her eşleşmeden önceki N satırı göster |
-C N, --context N |
Her eşleşmeden önceki ve sonraki N satırı göster |
-m N, --max-count N |
Dosya başına N eşleşmeden sonra dur |
-j N, --threads N |
N paralel işçi kullan |
-e P, --regexp P |
Arama deseni |
-L, --follow |
Sembolik bağlantıları izle |
--glob GLOB |
Yalnızca yolları GLOB ile eşleşen dosyaları dahil et |
--type NAME |
Bir dosya türünü dahil et |
--type-not NAME |
Bir dosya türünü hariç tut |
--json |
ripgrep tarzı JSON olayları yayınla |
--no-ignore |
.gitignore ve .grephignore kurallarını yok say |
--hidden |
Gizli dosyaları dahil et |
--files |
Arama yapmak yerine aday dosyaları listele |
--help |
Satır içi kullanımı göster |
sg
ast-grep tarzı uyumluluk sarmalayıcısı. En sık kullanılan ast-grep bayraklarını destekler. Doğrulanmış kapsam özellik matrisinde yayımlanır.
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]
run temel ast-grep fiilidir. scan ve rewrite, yaygın kullanımı yansıtan yalnızca sarmalayıcıya özgü takma adlardır. Parametresiz bir çağrı (sg --pattern ... .) da tek seferlik arama olarak çalışır.
Örnekler
./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
Desteklenen seçenekler
| Bayrak | Anlamı |
|---|---|
-p, --pattern PATTERN |
AST deseni |
-r, --rewrite TEMPLATE |
Yeniden yazma şablonu |
-l, --lang NAME |
AST dili. Varsayılan: php |
-j, --threads N |
N paralel işçi kullan |
-i, --interactive |
Her yeniden yazmayı onayla |
-U, --update-all |
Yeniden yazmaları onay almadan uygula |
--files-with-matches |
Yalnızca eşleşme bulunan dosya yollarını yazdır |
--json[=STYLE] |
JSON çıktısı üret. STYLE = pretty, stream veya compact |
--no-ignore [MODE] |
Depo yok sayma kurallarını yok say |
--hidden |
Gizli dosyaları dahil et |
--glob GLOB, --globs GLOB |
Yalnızca yolları GLOB ile eşleşen dosyaları dahil et |
--type NAME |
Bir dosya türünü dahil et |
--type-not NAME |
Bir dosya türünü hariç tut |
--dry-run |
Dosyalara yazmadan yeniden yazmaları önizle |
--help |
Satır içi kullanımı göster |
Çıkış kodları
Greph, grep / ripgrep kurallarını izler:
| Kod | Anlamı |
|---|---|
0 |
En az bir eşleşme bulundu (veya yeniden yazmalarda en az bir dosya değiştirildi) |
1 |
Eşleşme bulunamadı |
2 |
Kullanım hatası veya çalışma zamanı hatası (geçersiz bağımsız değişkenler, eksik dizin, --strict-parse kipinde ayrıştırma hatası) |