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:
- rg suderinamumo sąsaja: kiekvienas zondas paleidžiamas tiek su pirminiu
rgdvejetainiu failu, tiek subin/rg. Kad eilutė būtų pažymėta kaip palaikoma, abu turiPass. - sg suderinamumo sąsaja: kiekvienas zondas paleidžiamas tiek su pirminiu
sgdvejetainiu failu, tiek subin/sg. Kad eilutė būtų pažymėta kaip palaikoma, abu turiPass. - Tik sg apvalkalo sąsaja: zondai, skirti tik
bin/sg(papildomoms funkcijoms, kurias apvalkalas suteikia, bet kurių pati ast-grep neturi). - Vietinė greph sąsaja: zondai, tiesiogiai tikrinantys
bin/greph. Nėra pirminio įrankio palyginimui; zondai tikrina numatytą elgseną bandomojoje darbo srityje. - Indeksuota greph sąsaja: zondai, tikrinantys
bin/greph-index(sukūrimą, atnaujinimą ir teksto paiešką įšilusiame indekse). - 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
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ą.