Mailinglisten-Archive |
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