Reflection für Quellcode-Analyse?
-
Hi,
ich möchte beliebige Java-Quelldateien analysieren um z.B. UML-Diagramme zu generieren.
Bevor ich einen eigenen Parser baue, dachte ich, dass man vielleicht doch lieber Reflection nimmt.
Allerdings habe ich damit im Moment 2 Probleme:-
Man kann anscheinend nicht alles erfahren (z.B. kann man, soweit ich das gesehen habe keine Parameternamen von Methoden, sondern nur deren Typen ermitteln )
-
Wie kann man Quelltexte einlesen, die extern - also nicht im eigenen Package liegen. MAn könnte es evtl schmutzig lösen, indem man die Quellen einfach vor der Analyse in den Ordner des Analyse-Programms kopiert und dann mit class.forName(name) die Klassen laden. Aber das gefällt mir nicht so recht. Und mit dem ClassLoader kann man nur ByteCode aber keine Quelldateien laden, oder? (Gut, man könnte die Quellen evtl vorher kompilieren...)
Was meint ihr? Kommt man mit Reflection hin, oder lohnt es sich doch einen eigenen Parser zu bauen? Punkt 1) stört mich besonders, weil UML-Diagramme ohne parameternamen fänd ich nit so hübsch.
-
-
Reflection bringt nur was für Klassen, die binär vorliegen. Quelltexte können damit nicht analysiert werden.
-
Jo, wahrscheinlich werde ich selber nen Parser bauen müssen, denn die Quellen vorher zu kompilieren fänd ich auch nicht so optimal.
Mal schauen, ob Sun nicht irgendwo ne Beschreibung der Grammatik der Sprache Java hat...