Nette X-Ray
X-Ray показывает вам, как именно ваш проект использует экосистему Nette: какие методы, фильтры Latte и ключи конфигурации вы действительно используете.
Вам когда-нибудь было интересно, какие методы Nette вы вызываете чаще всего? Какие фильтры Latte вы действительно используете? Трогает ли ещё кто-нибудь тот старый ключ конфигурации? X-Ray просматривает ваш код статическим анализом и отвечает на это понятным HTML-отчётом.
Что анализируется
Вместо регулярных выражений или догадок X-Ray использует статический анализ: он разрешает типы через наследование, определяет объявляющие классы и отслеживает образцы аргументов. В результате получается точная картина того, как ваш проект взаимодействует с Nette.
| PHP и PHPT | Шаблоны Latte | Конфигурация NEON |
|---|---|---|
| вызовы методов и функций | теги и n:атрибуты | образцы сервисов DI |
| аргументы (позиционные, именованные) | фильтры и их аргументы | регистрация расширений |
| использование возвращаемого значения | функции и константы | использование секций |
| обращение к свойствам | варианты синтаксиса | ключи конфигурации |
| наследование классов и трейты | ||
| переопределения методов |
Установка
Установите его через Composer как зависимость для разработки:
composer require --dev nette/xray
Он требует PHP 8.2 или новее и работает на PHPStan 2.1. Он работает с любым проектом, использующим Nette, Latte, Tracy, Dibi или Texy.
Использование
Укажите ему свои каталоги с исходным кодом:
vendor/bin/xray app/ src/
Через мгновение вы получите интерактивный HTML-отчёт (xray-report.html),
который можно открыть в браузере, а вдобавок машиночитаемые данные
(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
Конфигурация
Создайте в корне проекта файл nette-xray.neon, чтобы настроить
поведение:
# Пути анализа по умолчанию (используются, когда аргументы командной строки не заданы)
paths:
- app
- src
# Дополнительные каталоги для исключения (vendor, temp, node_modules, .git исключены по умолчанию)
excludeDirs:
- generated
# Автоматическая отправка без вопросов
upload: false