Matriks Fitur
Matriks fitur adalah laporan yang dibuat secara otomatis untuk mencatat apakah alat native dan wrapper Greph menghasilkan keluaran yang setara untuk setiap flag dan perilaku yang didukung. Matriks ini menjadi sumber kebenaran untuk pertanyaan "apakah Greph mendukung ini?".
Matriks dibuat ulang dari probe perintah nyata pada ruang kerja fixture deterministik. Bukti mentah tersedia di FEATURE_MATRIX.json dan tabel yang dirender tersedia di FEATURE_MATRIX.md.
Panduan Status
| Status | Arti |
|---|---|
Pass |
Probe dijalankan dan sesuai dengan perilaku yang diharapkan |
Fail |
Probe dijalankan, tetapi tidak memenuhi perilaku yang diharapkan |
Unavailable |
Perintah penyedia tidak tersedia di lingkungan ini |
Bagian
Matriks ini disusun menjadi enam bagian:
- Permukaan Kompatibilitas rg: setiap probe dijalankan pada biner
rgupstream danbin/rg. Keduanya harusPassagar baris ditandai sebagai didukung. - Permukaan Kompatibilitas sg: setiap probe dijalankan pada biner
sgupstream danbin/sg. Keduanya harusPassagar baris ditandai sebagai didukung. - Permukaan Khusus Wrapper sg: probe yang hanya menargetkan
bin/sg(fitur tambahan yang disediakan wrapper tetapi tidak tersedia di ast-grep itu sendiri). - Permukaan greph Native: probe yang menguji
bin/grephsecara langsung. Tidak ada alat upstream untuk dibandingkan; probe memeriksa perilaku yang diharapkan pada ruang kerja fixture. - Permukaan greph Terindeks: probe yang menguji
bin/greph-index(build, penyegaran, dan pencarian teks yang sudah dihangatkan). - Permukaan Pustaka AST Terindeks: probe yang memanggil PHP API (
Greph::buildAstIndex(),Greph::searchAstIndexed(),Greph::buildAstCache(),Greph::searchAstCached()) dan memeriksa build, pencarian, serta penyegaran.
Membuat Ulang Matriks
php bin/feature-matrix
Jalankan dari hasil kloning repositori dengan rg dan sg di PATH; bin/feature-matrix bukan bagian dari paket Composer. Skrip ini membuat ruang kerja fixture, menjalankan setiap probe kompatibilitas terhadap biner upstream (jika terpasang) dan wrapper Greph, merekam hasil terstruktur, lalu menulis FEATURE_MATRIX.json dan FEATURE_MATRIX.md. Sertakan --stdout untuk menampilkan Markdown tanpa menulis file mana pun.
File yang dikomit dibuat ulang secara manual; CI tidak membuatnya ulang. Rangkaian PHPUnit yang dijalankan CI mencakup pengujian yang membuat matriks dengan alat upstream ditandai tidak tersedia, lalu memeriksa struktur laporannya. Dengan demikian, satu probe yang mulai gagal tidak akan menggagalkan CI. Buat ulang matriks dan tinjau diff sebelum rilis.
Isi Matriks dan Dokumentasi
Referensi CLI serta halaman Kompatibilitas / rg dan Kompatibilitas / sg menjelaskan cakupan yang dimaksud. Matriks fitur mencatat cakupan yang terverifikasi, dengan argumen probe yang persis di samping setiap baris.
Jika sesuatu didokumentasikan tetapi tidak ada dalam matriks, dokumentasinya sudah usang. Jika sesuatu ada dalam matriks tetapi tidak didokumentasikan, dokumentasinya perlu dilengkapi. Keduanya harus selaras.
Contoh Baris
Kompatibilitas rg (cuplikan)
| Fitur | rg | bin/rg | Catatan |
|---|---|---|---|
| Pencarian string tetap | Lulus | Lulus | Probe: -F needle single.txt |
| Pencarian string tetap tanpa membedakan huruf besar-kecil | Lulus | Lulus | Probe: -F -i needle single.txt |
| Pencarian seluruh kata | Lulus | Lulus | Probe: -F -w needle words.txt |
| Filter glob | Lulus | Lulus | Probe: --glob *.php function . |
| File tersembunyi | Lulus | Lulus | Probe: --hidden -F secret . |
| Keluaran JSON terstruktur | Lulus | Lulus | Probe: --json -F needle single.txt menggunakan semantik peristiwa ripgrep JSON |
Kompatibilitas sg (cuplikan)
| Fitur | sg | bin/sg | Catatan |
|---|---|---|---|
Pencarian pola dengan run --pattern |
Lulus | Lulus | Probe: run --pattern array($$$ITEMS) src/App.php |
Penulisan ulang melalui run --rewrite |
Lulus | Lulus | Probe: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] src/App.php |
| Keluaran aliran JSON terstruktur | Lulus | Lulus | Probe: run --json=stream --pattern dispatch($EVENT) src/App.php |
| Penulisan ulang semua | Lulus | Lulus | Probe: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] --update-all src/App.php |
Untuk tabel lengkap, lihat FEATURE_MATRIX.md.
Mengapa Berbasis Probe
Tabel kompatibilitas yang dipelihara secara manual akan menyimpang. Inti wrapper adalah "gunakan wrapper di tempat Anda biasa memanggil rg atau sg dan semuanya tetap berfungsi". Satu-satunya cara menjaga janji itu adalah menjalankan alat upstream dan wrapper secara berdampingan, lalu membandingkan hasilnya. Runner probe melakukan hal tersebut setiap kali matriks dibuat ulang.