Lewati ke konten

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:

  1. Permukaan Kompatibilitas rg: setiap probe dijalankan pada biner rg upstream dan bin/rg. Keduanya harus Pass agar baris ditandai sebagai didukung.
  2. Permukaan Kompatibilitas sg: setiap probe dijalankan pada biner sg upstream dan bin/sg. Keduanya harus Pass agar baris ditandai sebagai didukung.
  3. Permukaan Khusus Wrapper sg: probe yang hanya menargetkan bin/sg (fitur tambahan yang disediakan wrapper tetapi tidak tersedia di ast-grep itu sendiri).
  4. Permukaan greph Native: probe yang menguji bin/greph secara langsung. Tidak ada alat upstream untuk dibandingkan; probe memeriksa perilaku yang diharapkan pada ruang kerja fixture.
  5. Permukaan greph Terindeks: probe yang menguji bin/greph-index (build, penyegaran, dan pencarian teks yang sudah dihangatkan).
  6. 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

Shell
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.