Siirry sisältöön

Ominaisuusmatriisi

Ominaisuusmatriisi on luotu raportti, joka kirjaa jokaisen tuetun valitsimen ja toiminnon osalta, tuottavatko natiivi työkalu ja Greph-kääre saman tulosteen. Se on luotettava lähde kysymyksille, kuten ”tukeeko Greph tätä?”.

Matriisi luodaan uudelleen suorittamalla todellisia komentokokeita deterministisessä testiympäristössä. Raakatulokset ovat tiedostossa FEATURE_MATRIX.json, ja muotoiltu taulukko on tiedostossa FEATURE_MATRIX.md.

Tilaselitteet

Tila Merkitys
Pass Koe suoritettiin ja tulos vastasi odotettua toimintaa
Fail Koe suoritettiin, mutta tulos ei vastannut odotettua toimintaa
Unavailable Tarjoajan komentoa ei ollut saatavilla tässä ympäristössä

Osiot

Matriisi on jaettu kuuteen osioon:

  1. rg-yhteensopivuus: kukin koe suoritetaan sekä upstream-version rg-ohjelmalla että ohjelmalla bin/rg. Molempien on Pass, jotta rivi merkitään tuetuksi.
  2. sg-yhteensopivuus: kukin koe suoritetaan sekä upstream-version sg-ohjelmalla että ohjelmalla bin/sg. Molempien on Pass, jotta rivi merkitään tuetuksi.
  3. Vain sg-kääreen ominaisuudet: kokeet kohdistuvat vain kohteeseen bin/sg (lisäominaisuuksiin, joita kääre tarjoaa mutta joita ast-grep-ohjelmassa ei ole).
  4. Natiivin grephin ominaisuudet: kokeet kohdistuvat suoraan kohteeseen bin/greph. Vertailtavaa upstream-työkalua ei ole, joten kokeet varmistavat odotetun toiminnan testiympäristössä.
  5. Indeksoidun grephin ominaisuudet: kokeet kohdistuvat kohteeseen bin/greph-index (koonti, päivitys ja lämmitetty tekstihaku).
  6. Indeksoidun AST-kirjaston ominaisuudet: kokeissa kutsutaan PHP API-kirjastoa (Greph::buildAstIndex(), Greph::searchAstIndexed(), Greph::buildAstCache(), Greph::searchAstCached()) ja tarkistetaan koonti, haku ja päivitys.

Matriisin luominen uudelleen

Shell
php bin/feature-matrix

Suorita tämä tietovaraston kloonista, jossa rg ja sg ovat hakemistossa PATH; bin/feature-matrix ei kuulu Composer-pakettiin. Se luo testiympäristön, suorittaa kunkin yhteensopivuuskokeen upstream-ohjelmalla (jos se on asennettu) ja Greph-kääreellä, tallentaa rakenteiset tulokset ja kirjoittaa sekä tiedoston FEATURE_MATRIX.json että tiedoston FEATURE_MATRIX.md. Tulosta Markdown antamalla valitsin --stdout kirjoittamatta kumpaakaan tiedostoa.

Tietovarastossa olevat tiedostot luodaan uudelleen käsin; CI ei luo niitä uudelleen. CI:n suorittama PHPUnit-testikokoelma sisältää testin, joka luo matriisin niin, että upstream-työkalut merkitään puuttuviksi, ja tarkistaa raportin rakenteen. Näin yhden kokeen epäonnistuminen ei kaada CI:tä. Luo matriisi uudelleen ja tarkista muutokset ennen julkaisua.

Matriisin ja dokumentaation sisältö

CLI-viite ja sivut Yhteensopivuus / rg sekä Yhteensopivuus / sg kuvaavat suunniteltuja ominaisuuksia. Ominaisuusmatriisi tallentaa varmistetut ominaisuudet sekä kunkin rivin tarkat koeparametrit.

Jos dokumentaatiossa kuvattua ominaisuutta ei ole matriisissa, dokumentaatio on vanhentunut. Jos ominaisuus on matriisissa mutta sitä ei ole dokumentoitu, dokumentaatioon on lisättävä tiedot. Näiden tulee vastata toisiaan.

Esimerkkirivit

rg-yhteensopivuus (ote)

Ominaisuus rg bin/rg Huomautukset
Kiinteän merkkijonon haku Läpäisty Läpäisty Koe: -F needle single.txt
Kirjainkoosta riippumaton kiinteän merkkijonon haku Läpäisty Läpäisty Koe: -F -i needle single.txt
Kokonaisten sanojen haku Läpäisty Läpäisty Koe: -F -w needle words.txt
Glob-suodatin Läpäisty Läpäisty Koe: --glob *.php function .
Piilotetut tiedostot Läpäisty Läpäisty Koe: --hidden -F secret .
Rakenteinen JSON-tuloste Läpäisty Läpäisty Koe: --json -F needle single.txt, jossa käytetään ripgrep-JSON-tapahtumien semantiikkaa

sg-yhteensopivuus (ote)

Ominaisuus sg bin/sg Huomautukset
Hakumallihaku komennolla run --pattern Läpäisty Läpäisty Koe: run --pattern array($$$ITEMS) src/App.php
Uudelleenkirjoitus kohteella run --rewrite Läpäisty Läpäisty Koe: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] src/App.php
Rakenteinen JSON-virran tuloste Läpäisty Läpäisty Koe: run --json=stream --pattern dispatch($EVENT) src/App.php
Kaikkien osumien uudelleenkirjoitus Läpäisty Läpäisty Koe: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] --update-all src/App.php

Katso koko taulukko: FEATURE_MATRIX.md.

Miksi kokeisiin perustuva

Käsin ylläpidetty yhteensopivuustaulukko vanhenee. Kääreiden tarkoitus on, että ne voidaan ottaa suoraan käyttöön vanhojen rg- tai sg-kutsujen tilalla ja ne toimivat edelleen. Tämä lupaus voidaan pitää vain suorittamalla upstream-työkalu ja kääre rinnakkain ja vertailemalla tuloksia. Koekomentosarja tekee juuri näin aina, kun matriisi luodaan uudelleen.