M
Mario_H
Gast
Hallo.
Ich ein Programm schreiben um zu überprüfen, ob in gegebenen .java-Dateien bestimmte Methoden aus anderen, ebenfalls gegeben, .java-Dateien aufgerufen werden.
Den Vollqualifizierten Namen der Methoden kann ich schon ermitteln, das Problem ist, einen Methodenaufruf zu qualifizieren:
Die zu einem aufrufenden Objekt gehörigen Klassen müssen anhand des Objektnamens, dem Rückgabewert einer Methode, etc. ermittelt werden. (Um Namensgleichheiten der Methoden auszuschließen. z.B. toString())
Die Verschiedenen Dateien eines Packages sowie die Imports müssen ebenfalls ausgewertet werden. Und zu guter letzt kommt noch die Vererbung dazu.
(Kurz gesagt.)
Meine Idee war, dem Compiler die ganze 'Zuordnungsarbeit' zu überlassen und anstelle der .java-Dateien den erzeugten Bytecode auszuwerten.
Da aber das einzige, das ich über Bytecode (in diesem Zusammenhang) weiß ist, dass Methoden und Klassennamen im Klartext dargestellt werden, muss ich leider um Hilfe bitten, wie denn ein so ein Methodenaufruf im Bytecode genau aussieht, und wie ich die zugehörige Klasse ermitteln kann.
Vielen Dank im Voraus.
Gruß Mario.
Ich ein Programm schreiben um zu überprüfen, ob in gegebenen .java-Dateien bestimmte Methoden aus anderen, ebenfalls gegeben, .java-Dateien aufgerufen werden.
Den Vollqualifizierten Namen der Methoden kann ich schon ermitteln, das Problem ist, einen Methodenaufruf zu qualifizieren:
Die zu einem aufrufenden Objekt gehörigen Klassen müssen anhand des Objektnamens, dem Rückgabewert einer Methode, etc. ermittelt werden. (Um Namensgleichheiten der Methoden auszuschließen. z.B. toString())
Die Verschiedenen Dateien eines Packages sowie die Imports müssen ebenfalls ausgewertet werden. Und zu guter letzt kommt noch die Vererbung dazu.
(Kurz gesagt.)
Meine Idee war, dem Compiler die ganze 'Zuordnungsarbeit' zu überlassen und anstelle der .java-Dateien den erzeugten Bytecode auszuwerten.
Da aber das einzige, das ich über Bytecode (in diesem Zusammenhang) weiß ist, dass Methoden und Klassennamen im Klartext dargestellt werden, muss ich leider um Hilfe bitten, wie denn ein so ein Methodenaufruf im Bytecode genau aussieht, und wie ich die zugehörige Klasse ermitteln kann.
Vielen Dank im Voraus.
Gruß Mario.