Nette X-Ray
X-Ray le muestra exactamente cómo usa su proyecto el ecosistema de Nette: qué métodos, filtros de Latte y claves de configuración utiliza realmente.
¿Se ha preguntado alguna vez qué métodos de Nette llama más? ¿Qué filtros de Latte usa de verdad? ¿Si alguien toca todavía aquella clave de configuración antigua? X-Ray analiza su código con análisis estático y le responde con un informe HTML claro.
Qué se analiza
En lugar de expresiones regulares o conjeturas, X-Ray usa análisis estático: resuelve los tipos a través de la herencia, detecta las clases declarantes y sigue los patrones de argumentos. El resultado es una imagen precisa de cómo interactúa su proyecto con Nette.
| PHP y PHPT | Plantillas de Latte | Configuración NEON |
|---|---|---|
| llamadas a métodos y funciones | etiquetas y n:atributos | patrones de servicios DI |
| argumentos (posicionales, con nombre) | filtros y sus argumentos | registro de extensiones |
| uso del valor de retorno | funciones y constantes | uso de secciones |
| acceso a propiedades | variantes de sintaxis | claves de configuración |
| herencia de clases y traits | ||
| sobrescritura de métodos |
Instalación
Instálelo con Composer como dependencia de desarrollo:
composer require --dev nette/xray
Requiere PHP 8.2 o superior y funciona sobre PHPStan 2.1. Funciona con cualquier proyecto que use Nette, Latte, Tracy, Dibi o Texy.
Uso
Apúntelo a sus directorios de código fuente:
vendor/bin/xray app/ src/
En unos instantes obtiene un informe HTML interactivo (xray-report.html) que puede abrir en el navegador, además
de datos legibles por máquina (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
Configuración
Cree un archivo nette-xray.neon en la raíz de su proyecto para personalizar el comportamiento:
# Rutas de análisis predeterminadas (se usan cuando no se dan argumentos en la línea de comandos)
paths:
- app
- src
# Directorios adicionales que excluir (vendor, temp, node_modules y .git se excluyen de forma predeterminada)
excludeDirs:
- generated
# Enviar automáticamente sin preguntar
upload: false