Gå til indhold

Kompatibilitet med sg

vendor/bin/sg er en kompatibilitetswrapper i stil med ast-grep. Den accepterer de mest almindeligt brugte flag fra ast-grep og genbruger den samme motor Greph\Ast\AstSearcher, som vendor/bin/greph -p bruger. De verificerede funktioner er genskabt ud fra testkørsler mod den oprindelige binære fil sg og findes i Avanceret / funktionsoversigt.

Hvornår skal den bruges

Brug wrapperen, når:

  • Du har et eksisterende værktøj, en agent eller et script, der allerede kalder sg.
  • Du ønsker en drop-in-erstatning, der fungerer i miljøer, hvor du ikke kan installere ast-grep.
  • Du ønsker en ast-grep-arbejdsgang fra en installation, der kun indeholder Composer.

Brug native vendor/bin/greph -p, når:

  • Du skriver ny kode og ikke har brug for formen ast-grep CLI.
  • Du vil have samme sæt flag som i teksttilstand (den native binære fil samler begge tilstande).

Brug

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

run er den kanoniske kommando for ast-grep. scan og rewrite er aliaser, der kun findes i wrapperen, og som afspejler almindelig brug. Det fungerer også at køre kommandoen uden argumenter for at søge én gang:

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

Mønstre

Grammatikken for mønstre er identisk med den native AST-søgning. Se Tilstande / AST-søgning for den fulde reference.

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

Omskrivninger

Wrapperen understøtter samme arbejdsgang med prøvekørsel, interaktion og skrivning som den native omskrivning, med flagnavne fra ast-grep:

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-output

--json udsender ast-grep-formede JSON. Der understøttes tre formater:

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
Format Form
--json (standard pretty) Én pænt formateret JSON-array
--json=stream Ét match pr. linje, linjeafgrænset JSON
--json=compact Ét kompakt JSON-array

Verificerede funktioner

Følgende flag er verificeret mod den oprindelige binære fil sg i funktionsoversigten. Hvis et flag har to skrivemåder (-p og --pattern, --glob og --globs), bruger testen en af dem, og wrapperen fortolker begge som den samme indstilling.

Mønsterflag

  • --pattern PATTERN (på øverste niveau og inde i run)
  • -p PATTERN (alias)
  • --rewrite TEMPLATE
  • -r TEMPLATE
  • --lang NAME, -l NAME

Matchflag

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

Flag for filgennemgang

  • --no-ignore hidden (kombineret form)
  • --glob GLOB, --globs GLOB

Arbejderflag

  • -j N, --threads N

Accepteret uden test

Wrapperen accepterer også disse flag, men de er endnu ikke dækket af en test i funktionsoversigten:

  • --no-ignore alene eller med en anden værdi end hidden
  • --type NAME, --type-not NAME

Ekstra indstillinger kun til wrapperen

Wrapperen stiller nogle få hjælpefunktioner til rådighed, som selve ast-grep ikke har:

  • scan- og rewrite-aliaser til run
  • Flaget --hidden (ast-grep samler dette under --no-ignore hidden)
  • --dry-run-alias til forhåndsvisning af omskrivninger
  • --interactive-arbejdsgang til bekræftelse af omskrivninger

Begrænsninger

Wrapperen sg til Greph dækker de strukturelle søge- og omskrivningsfunktioner, som de fleste værktøjer og agenter bruger. Den stiller i øjeblikket ikke følgende funktioner fra ast-grep til rådighed:

  • Regel-filer fra YAML (--rule, --config)
  • Søgning i flere sprog ud over PHP
  • Transformere, der ikke bruger mønstre (--debug-query, --inspect)
  • LSP-integration

Hvis du støder på et manglende flag, kan du oprette en sag med den test, du kørte mod den oprindelige sg, og det forventede output.

Adfærdsmæssig overensstemmelse

Wrapperen tilstræber adfærdsmæssig overensstemmelse, ikke byte-for-byte-overensstemmelse. Outputtet er semantisk ækvivalent, men kosmetiske detaljer kan variere. Testene i funktionsoversigten kontrollerer, at de parserrelevante felter (filsti, linjenummer, registreret kode, registreringer, JSON-form) er ækvivalente, ikke at bytestrømmen er identisk.