Pereiti prie turinio

Funkcijų matrica

Funkcijų matrica yra sugeneruota ataskaita, kurioje kiekvienai palaikomai vėliavai ir elgsenai fiksuojama, ar vietinis įrankis ir Greph apvalkalas pateikia lygiavertę išvestį. Tai yra patikimiausias šaltinis atsakant į klausimus „ar Greph tai palaiko?“.

Matrica iš naujo generuojama vykdant tikras komandų patikras deterministinėje bandomojoje darbo srityje. Neapdoroti įrodymai yra FEATURE_MATRIX.json, o sugeneruota lentelė pateikiama FEATURE_MATRIX.md.

Būsenų legenda

Būsena Reikšmė
Pass Zondas paleistas ir jo rezultatas atitiko numatytą elgseną
Fail Zondas paleistas, bet jo rezultatas neatitiko numatytos elgsenos
Unavailable Teikėjo komandos šioje aplinkoje nėra

Skiltys

Matricą sudaro šešios skiltys:

  1. rg suderinamumo sąsaja: kiekvienas zondas paleidžiamas tiek su pirminiu rg dvejetainiu failu, tiek su bin/rg. Kad eilutė būtų pažymėta kaip palaikoma, abu turi Pass.
  2. sg suderinamumo sąsaja: kiekvienas zondas paleidžiamas tiek su pirminiu sg dvejetainiu failu, tiek su bin/sg. Kad eilutė būtų pažymėta kaip palaikoma, abu turi Pass.
  3. Tik sg apvalkalo sąsaja: zondai, skirti tik bin/sg (papildomoms funkcijoms, kurias apvalkalas suteikia, bet kurių pati ast-grep neturi).
  4. Vietinė greph sąsaja: zondai, tiesiogiai tikrinantys bin/greph. Nėra pirminio įrankio palyginimui; zondai tikrina numatytą elgseną bandomojoje darbo srityje.
  5. Indeksuota greph sąsaja: zondai, tikrinantys bin/greph-index (sukūrimą, atnaujinimą ir teksto paiešką įšilusiame indekse).
  6. Indeksuota AST bibliotekos sąsaja: zondai, iškviečiantys PHP API (Greph::buildAstIndex(), Greph::searchAstIndexed(), Greph::buildAstCache(), Greph::searchAstCached()) ir tikrinantys sukūrimą, paiešką bei atnaujinimą.

Matricos generavimas iš naujo

Shell
php bin/feature-matrix

Paleiskite klonuotoje saugykloje, turėdami rg ir sg PATH; bin/feature-matrix nėra Composer paketo dalis. Jis sukuria bandomąją darbo sritį, paleidžia kiekvieną suderinamumo zondą su pirminiu dvejetainiu failu (jei jis įdiegtas) ir Greph apvalkalu, įrašo struktūrizuotą rezultatą ir sukuria FEATURE_MATRIX.json bei FEATURE_MATRIX.md. Nurodykite --stdout, kad atspausdintumėte Markdown nesukurdami nė vieno failo.

Į saugyklą įtraukti failai sugeneruojami rankiniu būdu; CI jų iš naujo negeneruoja. Į CI vykdomą PHPUnit rinkinio dalį įtrauktas testas, kuris sugeneruoja matricą, pažymėjęs pirminius įrankius kaip nepasiekiamus, ir patikrina ataskaitos struktūrą, todėl vieno zondo nesėkmė nesustabdo CI. Prieš išleidimą sugeneruokite matricą iš naujo ir peržiūrėkite pakeitimus.

Kas pateikiama matricoje ir dokumentacijoje

CLI žinyne bei puslapiuose Suderinamumas / rg ir Suderinamumas / sg aprašoma numatyta sąsaja. Funkcijų matricoje pateikiama patikrinta sąsaja, prie kiekvienos eilutės nurodant tikslius zondo argumentus.

Jei kas nors aprašyta dokumentacijoje, bet nėra matricoje, dokumentacija pasenusi. Jei kas nors yra matricoje, bet neaprašyta, dokumentaciją reikia papildyti. Abi turi sutapti.

Eilučių pavyzdžiai

rg suderinamumas (ištrauka)

Funkcija rg bin/rg Pastabos
Fiksuotos eilutės paieška Pass Pass Zondas: -F needle single.txt
Fiksuotos eilutės paieška nepaisant raidžių registro Pass Pass Zondas: -F -i needle single.txt
Viso žodžio paieška Pass Pass Zondas: -F -w needle words.txt
Glob filtras Pass Pass Zondas: --glob *.php function .
Paslėpti failai Pass Pass Zondas: --hidden -F secret .
Struktūrizuota JSON išvestis Pass Pass Zondas: --json -F needle single.txt, naudojantis ripgrep JSON įvykio semantiką

sg suderinamumas (ištrauka)

Funkcija sg bin/sg Pastabos
Šablonų paieška naudojant run --pattern Pass Pass Zondas: run --pattern array($$$ITEMS) src/App.php
Perrašymas naudojant run --rewrite Pass Pass Zondas: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] src/App.php
Struktūrizuota JSON srauto išvestis Pass Pass Zondas: run --json=stream --pattern dispatch($EVENT) src/App.php
Visų atitikmenų perrašymas Pass Pass Zondas: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] --update-all src/App.php

Visą lentelę rasite FEATURE_MATRIX.md.

Kodėl naudojami zondai

Rankiniu būdu prižiūrima suderinamumo lentelė pasensta. Visų apvalkalų paskirtis – „įdiekite juos ten, kur anksčiau kvietėte rg arba sg, ir jie veiks toliau“, o šį pažadą galima ištesėti tik greta paleidus pirminį įrankį ir apvalkalą bei palyginus jų rezultatus. Zondų paleidimo įrankis būtent tai daro kiekvieną kartą iš naujo generuojant matricą.