Nette X-Ray
X-Ray projenizin Nette ekosistemini tam olarak nasıl kullandığını gösterir: hangi metotları, Latte filtrelerini ve yapılandırma anahtarlarını gerçekten kullanıyorsunuz.
En çok hangi Nette metotlarını çağırdığınızı hiç merak ettiniz mi? Gerçekten hangi Latte filtrelerini kullanıyorsunuz? O eski yapılandırma anahtarına hâlâ dokunan var mı? X-Ray kodunuzu statik çözümlemeyle tarar ve bunu anlaşılır bir HTML raporuyla yanıtlar.
Neler Çözümleniyor
X-Ray, regex ya da tahmin yerine statik çözümleme kullanır: tipleri kalıtım üzerinden çözer, bildiren sınıfları saptar ve argüman kalıplarını izler. Sonuç, projenizin Nette ile nasıl etkileştiğinin doğru bir resmidir.
| PHP ve PHPT | Latte şablonları | NEON yapılandırması |
|---|---|---|
| metot ve fonksiyon çağrıları | etiketler ve n:nitelikler | DI servis kalıpları |
| argümanlar (konumsal, adlandırılmış) | filtreler ve argümanları | uzantı kaydı |
| dönüş değeri kullanımı | fonksiyonlar ve sabitler | bölüm kullanımı |
| özellik erişimi | sözdizimi çeşitleri | yapılandırma anahtarları |
| sınıf kalıtımı ve trait'ler | ||
| metot geçersiz kılmaları |
Kurulum
Onu Composer ile bir dev bağımlılığı olarak kurun:
composer require --dev nette/xray
PHP 8.2 ya da daha yenisini gerektirir ve PHPStan 2.1 üzerinde çalışır. Nette, Latte, Tracy, Dibi ya da Texy kullanan her projeyle çalışır.
Kullanım
Onu kaynak dizinlerinize yöneltin:
vendor/bin/xray app/ src/
Kısa sürede, tarayıcınızda açabileceğiniz etkileşimli bir HTML raporu (xray-report.html) ve ayrıca makine
tarafından okunabilir veri (xray-report.json) elde edersiniz:
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
Yapılandırma
Davranışı özelleştirmek için proje kökünüzde bir nette-xray.neon dosyası oluşturun:
# Varsayılan çözümleme yolları (hiçbir CLI argümanı verilmediğinde kullanılır)
paths:
- app
- src
# Dışlanacak ek dizinler (vendor, temp, node_modules, .git varsayılan olarak dışlanır)
excludeDirs:
- generated
# Sormadan otomatik yükleme
upload: false