Preskoči na vsebino

Združljivost z sg

vendor/bin/sg je ovojnica za združljivost v slogu ast-grep. Sprejema najpogosteje uporabljene zastavice ast-grep in ponovno uporablja isti pogon Greph\Ast\AstSearcher, kot ga uporablja vendor/bin/greph -p. Preverjeni nabor je povzet po izvajanju preizkusov z izvorno binarno datoteko sg in je na voljo v Napredno / Matrika funkcij.

Kdaj jo uporabiti

Ovojnico uporabite, kadar:

  • Imate obstoječe orodje, agenta ali skript, ki že kliče sg.
  • Želite neposredno zamenjavo, ki deluje v okoljih, kjer ne morete namestiti samega ast-grep.
  • Želite uporabnost ast-grep pri namestitvi, ki podpira samo Composer.

Izvorno različico vendor/bin/greph -p uporabite, kadar:

  • Pišete novo kodo in ne potrebujete oblike ast-grep CLI.
  • Želite isti nabor zastavic kot v besedilnem načinu (izvorna binarna datoteka združuje oba načina).

Uporaba

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

run je kanonični glagol ast-grep. scan in rewrite sta vzdevka, namenjena samo ovojnici, ki odražata običajno rabo. Samostojen klic deluje za enkratno iskanje:

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

Vzorci

Slovnica vzorcev je enaka kot pri izvornem iskanju AST. Celotno referenco najdete v Načini / Iskanje AST.

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

Prepisovanje

Ovojnica podpira enak potek dela za poskusni zagon, interaktivno delo in zapisovanje kot izvorno prepisovanje, z imeni zastavic ast-grep:

Lupina
# 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

Izhod JSON

--json izpiše vsebino ast-grep v obliki JSON. Podprti so trije slogi:

Lupina
./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
Slog Oblika
--json (privzeto pretty) Eno lepo oblikovano polje JSON
--json=stream Eno ujemanje na vrstico, razmejeno z znaki za novo vrstico JSON
--json=compact Eno zgoščeno polje JSON

Preverjeni nabor

Naslednje zastavice so preverjene glede na izvorno binarno datoteko sg v matriki funkcij. Če ima zastavica dve obliki (-p in --pattern, --glob in --globs), preizkus uporabi eno od njiju, ovojnica pa obe razčleni kot isto možnost.

Zastavice vzorca

  • --pattern PATTERN (na najvišji ravni in znotraj run)
  • -p PATTERN (vzdevek)
  • --rewrite TEMPLATE
  • -r TEMPLATE
  • --lang NAME, -l NAME

Zastavice ujemanja

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

Zastavice pregledovalnika

  • --no-ignore hidden (združena oblika)
  • --glob GLOB, --globs GLOB

Zastavice delavcev

  • -j N, --threads N

Sprejete brez preizkusa

Ovojnica sprejema tudi te zastavice, vendar jih še ne pokriva noben preizkus matrike funkcij:

  • --no-ignore samostojno ali z vrednostjo, ki ni hidden
  • --type NAME, --type-not NAME

Dodatki samo za ovojnico

Ovojnica ponuja nekaj pripomočkov, ki jih sam ast-grep nima:

  • Vzdevka scan in rewrite za run
  • Zastavica --hidden (ast-grep to vključi v --no-ignore hidden)
  • Vzdevek --dry-run za predogled prepisov
  • Potek potrjevanja prepisov --interactive

Omejitve

Ovojnica sg orodja Greph pokriva možnosti strukturnega iskanja in prepisovanja, ki jih uporablja večina orodij in agentov. Trenutno ne ponuja naslednjih funkcij ast-grep:

  • Datoteke s pravili YAML (--rule, --config)
  • Pregledovanje več jezikov poleg PHP
  • Pretvorniki, ki ne temeljijo na vzorcih (--debug-query, --inspect)
  • Integracija z LSP

Če vam manjka zastavica, prijavite težavo in priložite preizkus, ki ste ga izvedli z izvornim programom sg, ter pričakovani izhod.

Ujemanje vedenja

Ovojnica si prizadeva za ujemanje vedenja, ne bajtov. Izhod je semantično enakovreden, vendar se lahko kozmetične podrobnosti razlikujejo. Preizkusi za matriko funkcij preverjajo enakovrednost polj, pomembnih za razčlenjevalnik (pot do datoteke, številka vrstice, zajeta koda, zajetja, oblika JSON), ne pa enakosti bajtnega toka.