Ugrás a tartalomhoz

sg-kompatibilitás

A vendor/bin/sg ast-grep-stílusú kompatibilitási burkoló. Elfogadja a leggyakrabban használt ast-grep jelzőket, és ugyanazt a Greph\Ast\AstSearcher motort használja, mint a vendor/bin/greph -p. Az ellenőrzött felület a felsőbb szintű sg bináris fájllal végzett próbaeredmények alapján készült, és az Haladó / Funkciómátrix oldalon található.

Mikor használja

Akkor használja a burkolót, ha:

  • Van egy meglévő eszköze, ügynöke vagy szkriptje, amely már a sg eszközt hívja.
  • Olyan közvetlenül behelyettesíthető megoldást szeretne, amely olyan környezetben is működik, ahol magát a ast-grep eszközt nem telepítheti.
  • Composer-alapú telepítésből szeretné élvezni a ast-grep használatának kényelmét.

Akkor használja a natív vendor/bin/greph -p eszközt, ha:

  • Új kódot ír, és nincs szüksége a ast-grep CLI formátumára.
  • A szöveges móddal megegyező jelzőkészletet szeretné használni (a natív bináris fájl egységesíti a kettőt).

Használat

Shell
sg run --pattern PATTERN [options] [path...]
sg scan -p PATTERN [options] [path...]
sg rewrite -p PATTERN -r TEMPLATE [options] [path...]

A run a kanonikus ast-grep ige. A scan és a rewrite csak a burkolóban elérhető aliasok, amelyek a szokásos használatot követik. Az argumentum nélküli meghívás egyszeri keresésként is működik:

Shell
./vendor/bin/sg --pattern 'array($$$ITEMS)' src

Minták

A mintanyelvtan megegyezik a natív AST-keresésével. A teljes leírást lásd a Módok / AST-keresés oldalon.

Shell
./vendor/bin/sg run --pattern 'array($$$ITEMS)' src
./vendor/bin/sg run --pattern '$obj->$method($$$ARGS)' src
./vendor/bin/sg run --pattern 'new $CLASS()' src

Átírások

A burkoló ugyanazt a próbaüzemű / interaktív / írási munkafolyamatot támogatja, mint a natív átírás, ast-grep jelzőnevekkel:

Shell
# Preview only (default)
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' src

# Apply without confirmation
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --update-all src

# Confirm each match
./vendor/bin/sg run --pattern 'array($$$ITEMS)' --rewrite '[$$$ITEMS]' --interactive src

# Wrapper-only aliases
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --dry-run src
./vendor/bin/sg rewrite -p 'array($$$ITEMS)' -r '[$$$ITEMS]' --interactive src

JSON kimenet

A --json ast-grep-formátumú JSON kimenetet állít elő. Három stílus támogatott:

Shell
./vendor/bin/sg run --json --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=stream --pattern 'dispatch($EVENT)' src
./vendor/bin/sg run --json=compact --pattern 'dispatch($EVENT)' src
Stílus Formátum
--json (alapértelmezett pretty) Egyetlen, szépen formázott JSON tömb
--json=stream Soronként egy egyezés, újsorokkal elválasztott JSON
--json=compact Egyetlen tömör JSON tömb

Ellenőrzött felület

A következő jelzők ellenőrzése a felsőbb szintű sg bináris fájlon történt, a funkciómátrix szerint. Ha egy jelzőnek két alakja van (-p és --pattern, --glob és --globs), a próba ezek egyikét használja, a burkoló pedig mindkettőt ugyanazon beállításként értelmezi.

Mintajelzők

  • --pattern PATTERN (legfelső szinten és a run belsejében)
  • -p PATTERN (alias)
  • --rewrite TEMPLATE
  • -r TEMPLATE
  • --lang NAME, -l NAME

Egyezési jelzők

  • --files-with-matches
  • --json (pretty, stream, compact)
  • --update-all, -U

Bejárási jelzők

  • --no-ignore hidden (kombinált forma)
  • --glob GLOB, --globs GLOB

Munkásjelzők

  • -j N, --threads N

Próba nélkül elfogadott jelzők

A burkoló ezeket a jelzőket is elfogadja, de a funkciómátrix még nem tartalmaz hozzájuk próbát:

  • A --no-ignore önmagában vagy a hidden értéktől eltérő értékkel
  • --type NAME, --type-not NAME

Csak a burkolóban elérhető kiegészítők

A burkoló néhány olyan segédeszközt is biztosít, amellyel maga a ast-grep nem rendelkezik:

  • scan és rewrite aliasok a következőhöz: run
  • --hidden jelző (a ast-grep ezt a --no-ignore hidden részévé teszi)
  • --dry-run átírási előnézet alias
  • --interactive átírás-megerősítési folyamat

Korlátozások

A Greph sg-burkolója a legtöbb eszköz és ügynök által használt strukturális keresési és átírási felületet biztosítja. Jelenleg a következő ast-grep funkciókat nem teszi elérhetővé:

  • YAML szabályfájlok (--rule, --config)
  • Többnyelvű vizsgálat a PHP nyelven túli nyelveken
  • Nem mintaalapú átalakítók (--debug-query, --inspect)
  • LSP-integráció

Ha hiányzó jelzőbe ütközik, nyisson hibajegyet az upstream sg ellen futtatott próbával és az elvárt kimenettel együtt.

Viselkedésbeli egyezés

A burkoló viselkedésbeli, nem pedig bájtszintű egyezésre törekszik. A kimenet szemantikailag egyenértékű, de kozmetikai részletekben eltérhet. A funkciómátrix próbái a parser szempontjából lényeges mezők (fájlútvonal, sorszám, rögzített kód, rögzítések, JSON formátuma) egyezését ellenőrzik, nem a bájtfolyam azonosságát.