Reverse Engineering K2 1 Ziele Heute Nachlese Volltextsuche Dokumentation in Quelltext einbetten JavaDoc Vorbereitung für Compileransatz
Reverse Engineering K2 2 Aufgaben zur Volltextsuche: 4.Suchen: Alle anwendenden Vorkommen von getName() der Klasse UMLClass Compilertechniken notwendig (nächste Woche) Die war gemein
Reverse Engineering K2 3 Aufgaben zur Volltextsuche: Resumee: Große Dateisysteme können schnell durchsucht werden Man muss "geschickt" suchen: –Textstücke manchmal zusammengesetzt –Manchmal Zeilenumbrüche –False Negatives: einige gesuchte Stellen werden nicht gefunden –False Positives: es werden falsche Treffer angezeigt
Reverse Engineering K2 4 Scripting / Programmierung mit Volltextsuche: Zusammen fassen / weiter verarbeiten / prüfen von matches durch Skripte / Programmierung Vorbereitung für Einsatz von Compilertechniken Aufgabe: Schreibt ein Programm (mit Fujaba oder Eclipse), dass einen Dateibaum durchsucht und alle Java Klassen und deren Superklassen und Interfaces findet und dafür eine objektorientierte Symboltabelle anlegt
Reverse Engineering K2 5 Quelltext eingebettete Dokumentation Erste Teilaufgaben: Directorybaum durchlaufen Javadatei in Stringbuffer einlesen Informiert euch, wie man aus Files liest per JavaDoc –startet z.B. bei java.io.File –falls das nichts hilft, schaut mal bei BufferedReader Informiert euch über Pattern / String.matches
Reverse Engineering K2 6 JavaDoc zu File: /** * Tests whether the file denoted by this abstract pathname is a * directory. * true if and only if the file denoted by this * abstract pathname exists and is a directory; * false otherwise * SecurityException * If a security manager exists and its * java.lang.SecurityManager#checkRead(java.lang.String)} * method denies read access to the file */ public boolean isDirectory() { Embedded Doku erlaubt gewisse Konsistenzprüfungen Doku wird mitgewartet Doku ist aktueller
Reverse Engineering K2 7 Pattern matching die zweite Einfaches Grundpattern: public class (\\w*)\\w* \w ist Buchstabe oder Ziffer Weil in Java String eingebettet \\w \\w viele davon: \\w* \\w* liefere gefundenes Wort: (\\w*)\\w*
Reverse Engineering K2 8 Symboltabelleninformation finder Directory/Projekt vorgegeben implementiert inspect zum Durchlaufen von Dateibäumen implementiert analyseJavaFile für die Suche nach den Teilen einer Klassendeklaration legt für die gefundenen Klassen FoundClass Objekte an. Testen z.B. im Dobs