phpbar.de logo

Mailinglisten-Archive

[php] [ANN] Diagnosetool für Bibliotheken

[php] [ANN] Diagnosetool für Bibliotheken

Ralf Müller r_mueller at imp-ag.de
Mit Nov 3 08:24:55 CET 2004


Am Dienstag, 2. November 2004 21:15 schrieb Johannes Schlueter:
> Hi,
>
> On Tuesday 02 November 2004 08:19, Ralf Müller wrote:
> > ich habe ein Tool geschrieben, mit dem funktionale Abhängigkeiten
> > innerhalb von Funktionsbibliotheken graphisch dargestellt werden.
> > Unter http://codegraph.rubyforge.org sind ein Screenshot und die
> > Abhängikeiten zu finden. Das Projekt selbst ist unter
> > http://rubyforge.org/projects/codegraph gehostet.
>
> ich habe es mir nicht genauer angeschaut (habe kein Ruby da *g*) sieht aber
> ganz nett aus. Was ich mich aber frage ist ob das mit PHP mitteln nicht
> einfacher zu machen wäre: Mit Hilfe des Tokenizers
> (http://php.net/tokenizer) über den Source gehen und alle Funktionsaufrufe
> rausziehen und evtl. mit Hilfe der Reflection-API (PHP5) weitere Infos zu
> den definierten
> Funktionen/Klassen holen.
>
> johannes

hallo johannes,

dass ich ruby benutzt habe, hat den einfachen grund, dass ich die Sprache mag 
und auf einfache weise objektorientiert herangehen wollte. 
Das es so etwas wie den Tokenizer gibt, wusste ich nicht. Aber du hast schon 
recht: Warum ruby benutzen, wenn ich PHP dafür benutzn kann, schliesslich 
kennt PHP seine eingene Grammatik (jedenfalls ab PHP5) und kann 
Funktionsaufrufe viel präziser erkennen als ctags. Ich habe das Tool 
allerdings nicht ausschliesslich für PHP geplant, sondern wollte es erweitern 
auf andere Sprachen. Für C/C++ gibt es sowas('codeviz', bei freshmeat). Für C 
und Fortran gibt es den 'sourcenavigator'. Das Problem bei solchen Programmen 
ist eben, das sie die Grammatik der verschiedenen Sprachen beherschen 
müssten, um wirklich alles zu erkennen von Funktioen, Variablen bis hin zu 
Klassen, Instanzen usw.

Für mich stand erstmal PHP im Vordergrund, weil ich damit arbeiten muss. 
Das coden sollte nicht so viel Zeit in Anspruch nehmen und ich finde, die 250 
Zeilen arbeiten ganz gut für mich. 
Das liegt an ruby: Sie ist einfach einfach.

Ich hab ich für ctags entschieden, weil ctags eben sehr viel von den oben 
genannten Aufgaben leisten: Es könnte unterstüzt viele Sprachen und erkennt 
die unterschiedlichsten Konstukte. Aber da ist natürlich schon die Granze 
erreicht: Mehr als ctags erkenne, könnte ich auch nicht. Das ist sozusagen 
meine Basis, auf der ich arbeite. Das erste Opfer sind die SESSION-Variablen, 
deren Werte die Applikation steueren. ctags ist nicht dynamisch und kann die 
angenommenen Werte nicht erkennen.

ralf

php::bar PHP Wiki   -   Listenarchive