Nette X-Ray

X-Ray zeigt Ihnen genau, wie Ihr Projekt das Nette-Ökosystem nutzt: welche Methoden, Latte-Filter und Konfigurationsschlüssel Sie tatsächlich verwenden.

Haben Sie sich schon einmal gefragt, welche Nette-Methoden Sie am häufigsten aufrufen? Welche Latte-Filter Sie wirklich verwenden? Ob überhaupt noch jemand jenen alten Konfigurationsschlüssel anfasst? X-Ray durchsucht Ihren Code mit statischer Analyse und beantwortet das mit einem übersichtlichen HTML-Bericht.

Was analysiert wird

Statt Regex oder Raterei verwendet X-Ray statische Analyse: Es löst Typen über die Vererbung auf, erkennt deklarierende Klassen und verfolgt Argumentmuster. Das Ergebnis ist ein genaues Bild davon, wie Ihr Projekt mit Nette zusammenspielt.

PHP und PHPT Latte-Templates NEON-Konfiguration
Methoden- und Funktionsaufrufe Tags und n:Attribute Muster der DI-Services
Argumente (positionell, benannt) Filter und ihre Argumente Registrierung von Extensions
Verwendung des Rückgabewerts Funktionen und Konstanten Verwendung von Abschnitten
Zugriff auf Properties Syntaxvarianten Konfigurationsschlüssel
Klassenvererbung und Traits    
Überschreiben von Methoden    

Installation

Installieren Sie es mit Composer als Dev-Abhängigkeit:

composer require --dev nette/xray

Es benötigt PHP 8.2 oder höher und läuft mit PHPStan 2.1. Es funktioniert mit jedem Projekt, das Nette, Latte, Tracy, Dibi oder Texy verwendet.

Verwendung

Richten Sie es auf Ihre Quellverzeichnisse:

vendor/bin/xray app/ src/

Innerhalb kurzer Zeit erhalten Sie einen interaktiven HTML-Bericht (xray-report.html), den Sie im Browser öffnen können, sowie maschinenlesbare Daten (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

Konfiguration

Legen Sie im Wurzelverzeichnis Ihres Projekts eine Datei nette-xray.neon an, um das Verhalten anzupassen:

# Standardpfade für die Analyse (werden verwendet, wenn keine CLI-Argumente angegeben sind)
paths:
	- app
	- src

# weitere auszuschließende Verzeichnisse (vendor, temp, node_modules, .git sind standardmäßig ausgeschlossen)
excludeDirs:
	- generated

# ohne Nachfrage automatisch hochladen
upload: false