Ich bin ja ein großer Freund von statischer Codeanalyse und optischer Aufbereitung (siehe auch Codevisualisierung mit pfff: PHP Frontend For Fun). Nun bin ich auf was neues aufmerksam geworden: Inclued. Mittels dieses coolen Tools lassen sich Includes zwischen Dateien einer Webanwendung visualisieren – sowas kann durchaus nützlich sein, wenn man sich in eine Anwendung reinschaffen möchte oder einen Überblick erhalten will.
Installationsanleitung
Ich gehe hier von Ubuntu aus, sollte aber mit kleinen Abwandlungen auch mit anderen Distributionen gut gehen.
- Wir brauchen phpize, um inclued zu installieren. Das ist im php-dev Paket enthalten.
sudo apt-get install php5-dev
- Nun wird inclued selbst über pecl installiert:
sudo pecl install inclued-alpha
- Zur php.ini muss nun (am besten unter extensions) hinzugefügt werden:
extension=inclued.so inclued.enabled=1 inclued.dumpdir=/tmp
- Apache restarten:
sudo apache2ctl restart
- Jetzt brauchen wir die gengraph.php, die inclued mitbringt. Bei mir befand sie sich in /usr/share/php/gengraph.php. Wer sie nicht findet, kann auch das PECL-Paket von dieser Seite herunterladen, da befindet sich dann die gengraph.php drin. Die habe ich nach htdocs verschoben.
- Zur Visualisierung des inclued-Outputs brauchen wir gengraph:
sudo apt-get install graphviz
- Anschließend besucht ihr die zu analysierende Webanwendung im Browser, also etwa http://localhost/codeigniter/index.php. Daraufhin generiert inclued eine Datei ins oben definierte temp-Verzeichnis. Bei mir hies sie /tmp/inclued.07565.1, der Name ist aber nicht vorhersehbar.
- Nun generieren wir mit der gengraph.php eine dot-Datei, die wir dann später visualisieren:
php /var/www/gengraph.php -i /tmp/inclued.07565.1
- Mittels
dot -Tpng -o inclued.png inclued.out.dot
generieren wir nun eine png-Datei, die dann genauso (bzw. hoffentlich weniger komplex) aussieht, wie die unten folgenden Beispiele.
Hi David
Schöner Artikel
Musste das ganze auch gerade mal ausprobieren (auch unter Ubuntu). Ich kann die ganzen Files erzeugen, aber das inclued.out.dot File hat bei mir immer den gleichen Inhalt, egal welches /tmp/inclued.* File ich nehme.
digraph phpdeps {
size=“6.6″;
node [shape = ellipse];
node [color=“#add960″, style=filled];
graph [bgcolor=“#f7f7f7″]; rankdir = „LR“;}
Hast Du eine Ahnung, an was das liegen könnte?
Servus! Genau da müssten dann eigentlich die Includes / Requires kommen. Sieht bei mir so aus:
digraph phpdeps {
size="6.6";
node [shape = ellipse];
node [color="#add960", style=filled];
graph [bgcolor="#f7f7f7"]; rankdir = "LR";
"/var/www/inctest/index.php" [label="/var/www/inctest/index.php"];
"/var/www/inctest/1.php" [label="/var/www/inctest/1.php"];
"/var/www/inctest/index.php" -> "/var/www/inctest/1.php"
[label = "require_once", style="solid"];
"/var/www/inctest/index.php" [label="/var/www/inctest/index.php"];
"/var/www/inctest/2.php" [label="/var/www/inctest/2.php"];
"/var/www/inctest/index.php" -> "/var/www/inctest/2.php"
[label = "require_once", style="solid"];
}
Die Sourcedatei inclued.xxxxx.x schaut so aus (serialisiertes PHP): http://i.imgur.com/mfmev.png
Mich würds mal interessieren wie die Datei bei dir ausschaut.