Nette X-Ray

X-Ray vi mostra esattamente come il vostro progetto usa l'ecosistema Nette: quali metodi, filtri Latte e chiavi di configurazione usate davvero.

Vi siete mai chiesti quali metodi di Nette chiamate più spesso? Quali filtri Latte usate davvero? Se qualcuno tocca ancora quella vecchia chiave di configurazione? X-Ray analizza il vostro codice con l'analisi statica e vi risponde con un chiaro report HTML.

Che cosa viene analizzato

Invece di regex o supposizioni, X-Ray usa l'analisi statica: risolve i tipi attraverso l'ereditarietà, rileva le classi dichiaranti e traccia gli schemi degli argomenti. Il risultato è un quadro accurato di come il vostro progetto interagisce con Nette.

PHP e PHPT Template Latte Configurazione NEON
chiamate di metodi e funzioni tag e n:attributi schemi dei servizi DI
argomenti (posizionali, con nome) filtri e loro argomenti registrazione delle estensioni
uso del valore di ritorno funzioni e costanti uso delle sezioni
accesso alle proprietà varianti di sintassi chiavi di configurazione
ereditarietà delle classi e trait    
ridefinizioni dei metodi    

Installazione

Installatelo con Composer come dipendenza di sviluppo:

composer require --dev nette/xray

Richiede PHP 8.2 o superiore e gira su PHPStan 2.1. Funziona con qualsiasi progetto che usa Nette, Latte, Tracy, Dibi o Texy.

Uso

Puntatelo sulle vostre directory sorgente:

vendor/bin/xray app/ src/

In pochi istanti ottenete un report HTML interattivo (xray-report.html) che potete aprire nel browser, oltre a dati leggibili dalle macchine (xray-report.json):



Nette X-Ray
===========

Scanning PHP files ... 142/142 done
Scanning NEON files ... 4/4 done
Scanning Latte files ... 87/87 done

Reports saved to:
  xray-report.json
  xray-report.html

Configurazione

Create nella radice del progetto un file nette-xray.neon per personalizzare il comportamento:

# percorsi di analisi predefiniti (usati quando non si danno argomenti da riga di comando)
paths:
	- app
	- src

# altre directory da escludere (vendor, temp, node_modules, .git sono escluse per impostazione predefinita)
excludeDirs:
	- generated

# invio automatico senza chiedere
upload: false