Matriz de recursos
A matriz de recursos é um relatório gerado que registra, para cada sinalizador e comportamento compatível, se a ferramenta nativa e o wrapper Greph produzem resultados equivalentes. Ela é a fonte confiável para responder a perguntas como "Greph oferece suporte a isto?".
A matriz é regenerada com sondagens de comandos reais em um espaço de trabalho de teste determinístico. As evidências brutas ficam em FEATURE_MATRIX.json e a tabela renderizada fica em FEATURE_MATRIX.md.
Legenda de status
| Status | Significado |
|---|---|
Pass |
A sondagem foi executada e correspondeu ao comportamento esperado |
Fail |
A sondagem foi executada, mas não correspondeu ao comportamento esperado |
Unavailable |
O comando do provedor não estava disponível neste ambiente |
Seções
A matriz está organizada em seis seções:
- Compatibilidade com rg: cada sondagem é executada tanto no binário upstream
rgquanto embin/rg. Ambos precisamPasspara que a linha seja marcada como compatível. - Compatibilidade com sg: cada sondagem é executada tanto no binário upstream
sgquanto embin/sg. Ambos precisamPasspara que a linha seja marcada como compatível. - Superfície exclusiva do wrapper sg: sondagens que visam apenas
bin/sg(recursos extras expostos pelo wrapper que ast-grep não oferece). - Superfície nativa do greph: sondagens que exercitam diretamente
bin/greph. Não há ferramenta upstream para comparar; as sondagens verificam o comportamento esperado no espaço de trabalho de teste. - Superfície indexada do greph: sondagens que exercitam
bin/greph-index(compilação, atualização e pesquisa de texto aquecida). - Superfície da biblioteca de AST indexada: sondagens que chamam PHP API (
Greph::buildAstIndex(),Greph::searchAstIndexed(),Greph::buildAstCache(),Greph::searchAstCached()) e verificam a compilação, a pesquisa e a atualização.
Regenerar a matriz
php bin/feature-matrix
Execute a partir de um clone do repositório com rg e sg no PATH; bin/feature-matrix não faz parte do pacote Composer. Ele compila o espaço de trabalho de teste, executa cada sondagem de compatibilidade com o binário upstream (se estiver instalado) e com o wrapper Greph, registra o resultado estruturado e grava tanto FEATURE_MATRIX.json quanto FEATURE_MATRIX.md. Passe --stdout para exibir o Markdown sem gravar nenhum dos arquivos.
Os arquivos versionados são regenerados manualmente; o CI não os regenera. A suíte PHPUnit executada pelo CI inclui um teste que gera a matriz com as ferramentas upstream marcadas como indisponíveis e verifica a estrutura do relatório, para que uma única sondagem que comece a falhar não faça o CI falhar. Regenere a matriz e revise as diferenças antes de uma versão.
O que fica na matriz e o que fica na documentação
A referência CLI e as páginas Compatibilidade / rg e Compatibilidade / sg descrevem a superfície pretendida. A matriz de recursos registra a superfície verificada, com os argumentos exatos das sondagens ao lado de cada linha.
Se algo está documentado, mas não aparece na matriz, a documentação está desatualizada. Se algo consta na matriz, mas não está documentado, é preciso complementar a documentação. Ambos devem corresponder.
Exemplos de linhas
Compatibilidade com rg (trecho)
| Recurso | rg | bin/rg | Observações |
|---|---|---|---|
| Pesquisa de cadeia fixa | Passou | Passou | Sondagem: -F needle single.txt |
| Pesquisa de cadeia fixa sem distinção entre maiúsculas e minúsculas | Passou | Passou | Sondagem: -F -i needle single.txt |
| Pesquisa de palavra inteira | Passou | Passou | Sondagem: -F -w needle words.txt |
| Filtro glob | Passou | Passou | Sondagem: --glob *.php function . |
| Arquivos ocultos | Passou | Passou | Sondagem: --hidden -F secret . |
| Saída estruturada JSON | Passou | Passou | Sondagem: --json -F needle single.txt com semântica de eventos ripgrep JSON |
Compatibilidade com sg (trecho)
| Recurso | sg | bin/sg | Observações |
|---|---|---|---|
Pesquisa de padrões com run --pattern |
Passou | Passou | Sondagem: run --pattern array($$$ITEMS) src/App.php |
Reescrita via run --rewrite |
Passou | Passou | Sondagem: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] src/App.php |
| Saída de fluxo estruturado JSON | Passou | Passou | Sondagem: run --json=stream --pattern dispatch($EVENT) src/App.php |
| Reescrita de todos os itens | Passou | Passou | Sondagem: run --pattern array($$$ITEMS) --rewrite [$$$ITEMS] --update-all src/App.php |
Para a tabela completa, consulte FEATURE_MATRIX.md.
Por que usar sondagens
Uma tabela de compatibilidade mantida manualmente fica desatualizada. O objetivo dos wrappers é "substituí-los onde você costumava chamar rg ou sg, e eles continuam funcionando"; a única forma de cumprir essa promessa é executar a ferramenta upstream e o wrapper lado a lado e comparar os resultados. O executor de sondagens faz exatamente isso cada vez que a matriz é regenerada.