Nette X-Ray
X-Ray pokazuje Ci dokładnie, jak Twój projekt używa ekosystemu Nette: których metod, filtrów Latte i kluczy konfiguracyjnych faktycznie używasz.
Zastanawiałeś się kiedyś, które metody Nette wywołujesz najczęściej? Których filtrów Latte faktycznie używasz? Czy ktoś jeszcze rusza ten stary klucz konfiguracyjny? X-Ray skanuje Twój kod analizą statyczną i odpowiada na to przejrzystym raportem HTML.
Co jest analizowane
Zamiast regexów albo zgadywania X-Ray używa analizy statycznej: rozwiązuje typy przez dziedziczenie, wykrywa klasy deklarujące i śledzi wzorce argumentów. Wynikiem jest dokładny obraz tego, jak Twój projekt współpracuje z Nette.
| PHP i PHPT | Szablony Latte | Konfiguracja NEON |
|---|---|---|
| wywołania metod i funkcji | tagi i n:atrybuty | wzorce usług DI |
| argumenty (pozycyjne, nazwane) | filtry i ich argumenty | rejestracja rozszerzeń |
| użycie wartości zwracanych | funkcje i stałe | użycie sekcji |
| dostęp do właściwości | warianty składni | klucze konfiguracyjne |
| dziedziczenie klas i traity | ||
| nadpisania metod |
Instalacja
Zainstaluj go przez Composera jako zależność deweloperską:
composer require --dev nette/xray
Wymaga PHP 8.2 albo wyższego i działa na PHPStan 2.1. Współpracuje z dowolnym projektem używającym Nette, Latte, Tracy, Dibi albo Texy.
Użycie
Wskaż mu swoje katalogi źródłowe:
vendor/bin/xray app/ src/
W kilka chwil dostaniesz interaktywny raport HTML (xray-report.html), który możesz otworzyć w przeglądarce,
plus dane czytelne maszynowo (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
Konfiguracja
Utwórz w katalogu głównym projektu plik nette-xray.neon, żeby dostosować zachowanie:
# Domyślne ścieżki analizy (używane, gdy nie podano argumentów CLI)
paths:
- app
- src
# Dodatkowe katalogi do wykluczenia (vendor, temp, node_modules, .git są wykluczone domyślnie)
excludeDirs:
- generated
# Automatyczne wysyłanie bez pytania
upload: false