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:
- rg-yhteensopivuus: kukin koe suoritetaan sekä upstream-version
rg-ohjelmalla että ohjelmallabin/rg. Molempien onPass, jotta rivi merkitään tuetuksi. - sg-yhteensopivuus: kukin koe suoritetaan sekä upstream-version
sg-ohjelmalla että ohjelmallabin/sg. Molempien onPass, jotta rivi merkitään tuetuksi. - Vain sg-kääreen ominaisuudet: kokeet kohdistuvat vain kohteeseen
bin/sg(lisäominaisuuksiin, joita kääre tarjoaa mutta joita ast-grep-ohjelmassa ei ole). - Natiivin grephin ominaisuudet: kokeet kohdistuvat suoraan kohteeseen
bin/greph. Vertailtavaa upstream-työkalua ei ole, joten kokeet varmistavat odotetun toiminnan testiympäristössä. - Indeksoidun grephin ominaisuudet: kokeet kohdistuvat kohteeseen
bin/greph-index(koonti, päivitys ja lämmitetty tekstihaku). - 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
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.