Methodenverwendung in Quelltext oder Class-Objekt suchen?

Status
Nicht offen für weitere Antworten.

Novanic

Bekanntes Mitglied
Hi Leute,

ich habe ein recht spezielles Problem. Und zwar habe ich einen Quelltext oder auch ein Class-Objekt und möchte nach einer Methodenverwendung suchen.

Beispiel - Quelltext:
Code:
public class Test
{

  public String getFirstSign(String aString) {
    return aString.substring(0, 1);
  }

}
Und nun möchte ich prüfen, ob die Methode "substring" der Klasse String in dem Quelltext verwendet wird.

Selber einen Algorithmus zu schreiben, wäre wohl viel zu komplex. Gibt es vielleicht eine API/Framework mit der man einen Quelltext auf soetwas untersuchen kann? Die ganzen IDEs machen sowas ja auch.

Danke schonmal. :)

Gruß Nova[/code]
 

Wildcard

Top Contributor
Dafür brauchst du ein AST Modell der zu durchsuchenden Klassen.
Ein Eclipse PlugIn zu schreiben dürfte die einfachste Alternative darstellen.
 

Novanic

Bekanntes Mitglied
Hm, ja, ne, von eclipse würde ich ganz gerne unabhängig bleiben.

Gibt es denn ein gutes AST-Framework für Java mit dem ich mein Ziel relativ simpel lösen kann? (Opensource)

Danke für die Hilfe.

Gruß Nova
 
G

Guest

Gast
mmh täusche ich mich da oder machen es die ide's mit reflection ????


was in deinem fall ja nicht möglich ist, weil du alle methoden kennen must, schade!
 
G

Guest

Gast
hehe ja gut eclipse fährt ja sowieso immer eine sonderschiene, wahrscheinlich wird dafür auch wieder irgendeine native bibliothek verwendet genau wie bei swt....

nei im ernst: das sieht echt cool aus, muss ich mir auch mal reinziehen
 

Marco13

Top Contributor
Ähm ???:L beim JBuilder macht man da auf das "substring" einen Rechtsklick, wählt im Menü "Find references", und bekommt dann aufgelistet, wo die Methode aufgerufen wird - das muss es doch bei Eclipse auch geben ???:L
 

Wildcard

Top Contributor
Marco13 hat gesagt.:
Ähm ???:L beim JBuilder macht man da auf das "substring" einen Rechtsklick, wählt im Menü "Find references", und bekommt dann aufgelistet, wo die Methode aufgerufen wird - das muss es doch bei Eclipse auch geben ???:L
In Eclipse JDT ist es Rechtsklick -> search for References in Workspace.
Das JBuilder nur ein Eclipse PlugIn ist weißt du aber, oder? ???:L
 

Marco13

Top Contributor
Nur der neueste, 2007er. Davor war das AFAIK aber schon eine eigenständige IDE von Borland. (Und eine IMHO sehr gute, nur mal nebenbei gesagt)
 

Wildcard

Top Contributor
Ja, davor war's eigenständig.
Hab ihn nie selbst versucht, wüsste aber auch nicht weshalb, denn IntelliJ ist billiger und laut Umfragen auch besser....
 

Novanic

Bekanntes Mitglied
Ja, IntelliJ ist super und mächtig. :)

Also mir erscheint das mit dem AST alles zu oversized. Die Lösung sollte auch sehr performant sein. Und es geht wirklich "nur" darum zu prüfen ob in einem Quelltext eine bestimmte Methode verwendet wird (nur in einer Datei soll gesucht werden).
Aber einen zuverlässigen Algoritmus selbst zu schreiben fällt mir jetzt auch nicht gerade super leicht. Hat sowas nicht schonmal jemand gemacht? :)

Danke schonmal.

Gruß Nova
 

Wildcard

Top Contributor
Bist du der Meinung mit einem RegEx eine 100%ige Trefferquote erzielen zu können?
Wohl eher nicht.
Wie macht man's stattdessen?
Richtig, mit einem AST :roll:
 

Novanic

Bekanntes Mitglied
Also ich komm einfach nicht weiter.

Ich hab mich jetzt mit zwei Frameworks beschäftigt: "antlr" und "javacc".
Beide funktionieren nicht.
Für javacc hab ich kein jjt-File (JJTree) gefunden, sodass nur eine Parser generiert werden kann was mir aber reichlich wenig bringt, da der Parser dank final-Methoden nicht erweitert werden kann (AST wird dadurch auch nicht gebaut).
Und für antlr soll es angeblich eine Option geben "buildAST", damit die Klassen für AST generiert werden, die ist aber in der Java-Grammar-File nicht aktiviert und wenn ich sie aktivieren, fliegt mir der Compiler mit "illegal option buildAST" um die Ohren. Dann hab ich noch Beispiele gefunden, bei denen eine Klasse angegeben wurde, aber das nimmt der antlr-Compiler auch nicht an.

Also die beiden Teile können mich in keinsterweise überzeugen. Ich habe es nur geschafft die Parser-Klassen zu generieren, aber von einem AST ist bei Weitem nichts in Sicht und nach mindestens 2 Tagen recherche rumprobieren, verlier ich auch langsam die lust und gedult mit den Frameworks...

Habt ihr noch andere Frameworks oder Ideen wie ich an meine Problemlösung komme oder hat jemand eine Java-Grammar-File mit der ihr es geschafft habt einen AST/AST-Parser zu generieren?

Danke schonmal.

Gruß Nova
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
J Daten von Quelltext Allgemeine Java-Themen 5
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
H Quelltext / Source aus jar Datei rekonstruieren Allgemeine Java-Themen 1
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
J Datentypen Verständnisprobleme bei einem Quelltext Allgemeine Java-Themen 32
S HTML-Quelltext nach bestimmter Stelle durchsuchen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
I Nach Neuinstallation fehler im Quelltext Allgemeine Java-Themen 7
M Dateien mit Quelltext parsen Allgemeine Java-Themen 7
T DLL in Java einbinden (Quelltext aus Excel VBA) Allgemeine Java-Themen 5
M Hilfe bei einem Quelltext!!! Allgemeine Java-Themen 2
S Bräuchte hilfe in der quelltext interpretations Allgemeine Java-Themen 2
L Jar File aus Quelltext heraus starten Allgemeine Java-Themen 9
D Quelltext einer URL einlesen Allgemeine Java-Themen 2
Norrit Quelltext beim Kompilieren ändern Allgemeine Java-Themen 7
J Ausgabe der Quelltext Zeilennummer? Allgemeine Java-Themen 12
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
S quelltext einer html-seite auslesen Allgemeine Java-Themen 3
E Quelltext nach Datentypen durchsuchen Allgemeine Java-Themen 10
I RSA - Eigener Quelltext Allgemeine Java-Themen 4
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben