Quelltext nach Datentypen durchsuchen

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ich habe folgendes Problem: Ich muss Methoden von Klassen nach allen darin verwendeten Datentypen (mich interessieren speziell alle verwendeten Klassen) durchsuchen. Leider weiß ich nicht so genau, wie ich am besten vorgehen soll.

Den Code "manuell" zu zerlegen schein mir sehr schwierig der er ja an allerlei Stellen nahezubeliebig tief geschachtelt und verknisselt (? ;) ?) sein kann.

Als zweiter Ansatz kam mir der Gedanke, alle "Wörter" des Codes (also Typen, Schlüsselwörter, Zahlen, ==, usw.) in ein Array (/Vector) zu packen und dann auszusieben: Schlüsselwörter raus, Klammern und sonstige "Sonderzeichen" raus, usw. bis nurnoch Typen (Klassennamen) und Variablennamen (und evtl Funktionsaufrufe) übrig bleiben. Dann stellt sich aber die Frage, wie ich den Rest aussortieren soll.

Ich hoffe ihr könnt mir helfen, mir vll. bessere / konkretere Ansätze nennen.
 

Acha

Bekanntes Mitglied
Hmmm, da muß Dein Code aber ganz schön groß sein, dass Du keine Übersicht mehr über verwendete Klassen und Methoden hast.

Wie wäre es, wenn Du ein UML-Diagramm von Deinem Programm erstellst/erstellen läßt. Eclipse kann das beispielsweise ganz gut mit dem Omondo-Plugin. In dem UML hast du dann alle Klassen mit ihren Methoden(namen) und Klassenvariablen (je nachdem, wie detailgetreu Du das UML - Diagramm erstellst) übersichtlich aufgelistet.

MFG

Acha
 

Evolver

Bekanntes Mitglied
Du hast mich falsch verstanden. Ich arbeite an Reverse-Engineering, mein Programm muss also fremden Quellcode zerlegen und aus den Informationen dann später ein UML-Modell erstellen.

Den Code "manuell" zu zerlegen schein mir sehr schwierig ...
Hier habe ich mich vielleicht etwas ungünsitg ausgedrückt.
 

Evolver

Bekanntes Mitglied
Kann denn niemand helfen? Das ist sehr wichtig. Oder hat vielleicht jemand Code oder einen Link, wo soetwas behandelt wird? Ich bin für jeden hinweis dankbar.
 
S

SlaterB

Gast
tja, wer so ein Programm kennt wird es dir sicher nicht verschweigen ;)
also ein Post als Erinnerung ist nicht schlecht, aber brauchst nicht so flehend fragen

-------

> Den Code "manuell" zu zerlegen schein mir sehr schwierig der er ja an allerlei Stellen nahezubeliebig tief geschachtelt und verknisselt (? ?) sein kann

das ist gar nicht mal so ein Problem, merke dir nur, was in jeder Operation an Klassen drankommt und Referenzen auf andere Operationen,
später hast du dann einen Graphen (wahrscheinlich mit Kreisen),
ob du den dann auflösen willst ist eine andere Frage

was du vielleicht bedenken solltest:
- wenn man auf eine Klasse erstmals zugreift, wird diese initialisiert,
statische Variablen erzeugt, was alles mögliche sein kann,

- ganz doof wirds mit Interfaces, ActionListener usw.,
was willst du denn da haben?
 
R

Roar

Gast
ich weiß zwar nicht warum ein uml modell die verwendeten datentypen von methoden darstellen sollte :)?:),
aber benutz doch einfach javac, is ja sogar opensource jetz
 

Evolver

Bekanntes Mitglied
ich weiß zwar nicht warum ein uml modell die verwendeten datentypen von methoden darstellen sollte

Wie oben erwähnt meine ich mit "Datentypen" eher die verwendeten Klassen. Wenn ich in einer Methode von Klasse A ein Objekt von Klasse B verwende, so besteht schließlich eine Assoziation zwischen den Klassen, die ich im Modell darstellen muss.
 
R

Roar

Gast
Evolver hat gesagt.:
ich weiß zwar nicht warum ein uml modell die verwendeten datentypen von methoden darstellen sollte

Wie oben erwähnt meine ich mit "Datentypen" eher die verwendeten Klassen. Wenn ich in einer Methode von Klasse A ein Objekt von Klasse B verwende, so besteht schließlich eine Assoziation zwischen den Klassen, die ich im Modell darstellen muss.
meiner meinung nach besteht da noch lange keine assoziazion im uml sinne zwischen den beiden klassen, nur weil ich die klasse in einer methode benutze, und gehört deswegen ebensowenig in ein uml klassendiagramm wie eine anonyme klasse, finde ich ;)
 

Evolver

Bekanntes Mitglied
meiner meinung nach besteht da noch lange keine assoziazion im uml sinne zwischen den beiden klassen, nur weil ich die klasse in einer methode benutze, und gehört deswegen ebensowenig in ein uml klassendiagramm wie eine anonyme klasse, finde ich
Das mag deine Meinung sein. Ich bin mir da nciht sicher, aber ich weiß, mein Professor ist da auf jeden Fall anderer Meinung. Deswegen werde ich die Hinzunahme solcher Assoziationen auch optional machen. Das ändert leider nichts an dem Fakt, dass ich die Informationen benötige.


benutz doch einfach javac, is ja sogar opensource jetz
Nun, ich habe es mir mal angesehen und ich denke, so umfangreich wie es ist würde es zu viel Zeit in Anspruch nehmen, mich in den Code des javac einzuarbeiten. Aber danke trotzdem für die Idee. Im Notfall kann ich mich ja imemrnoch etwas damit quählen :roll:.


Es gibt dependency analyser.
Ja, das könnte in die richtige Richtung führen, mal schauen.
 

Evolver

Bekanntes Mitglied
Was würdet ihr von dem folgenden Ansatz halten:

Zunächste lese ich in der Funktion, ob ich auf ifs, trys, returns usw. treffe, ich überlese sie ggf. Ich habe da eine Funktion erstellt, die müsste das so hinbekommen. Am Ende bleiben mir nur Zeilen (Anweisungen) die - wie soll ich es ausdrücken ... - nur mit Variablen, Funktionsaufrufen etc. zusammenhängen. Für jede solche Zeile (Anweisung) rufe ich dann eine Funktion auf, die sie auswertet. Um diese Funktion geht es im Folgenden.

Ich interessiere mich ja hautpsächlich dafür, welche Klassen verwendet werden, also habe ich mir überlegt, dass Varibalen (Referenzen) immer in der folgenden Form angelegt werden:
Code:
{final} TYP {[]}^n NAME {[]}^n ...
   weiter mit ;
   oder       , NAME2 {[]}^m ...
   oder       = <irgendwas> ...
Sehe ich das soweit richtig? Dann könnte ich ja einfach für jede Anweisung prüfen, ob sie der obigen Struktur entspricht, diese dann auszuwerten stellt ja kein größeres Problem dar.
Zur Erweiterung könnte ich dann nach weiteren Vorkommen des Schlüsselwortes new suchen, um nicht-referenzierte Objekte von Klassen aufzuspüren.


==========
Problematisch bleibt bislang das Aufsprüren von Aufrufen statischer Methoden/Attribute fremder Klassen und das unreferenzierte Weiterbenutzen von Objekten die von irgendwelchen aufgerufenen Methoden zurückgegeben werden.
==========
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HTML-Quelltext nach bestimmter Stelle durchsuchen Allgemeine Java-Themen 2
I Nach Neuinstallation fehler im Quelltext Allgemeine Java-Themen 7
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
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
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
N Methodenverwendung in Quelltext oder Class-Objekt suchen? Allgemeine Java-Themen 14
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
S quelltext einer html-seite auslesen Allgemeine Java-Themen 3
I RSA - Eigener Quelltext Allgemeine Java-Themen 4
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben