70 likes | 197 Views
Übersicht. Quelltextanalyse mit regulären Ausdrücken Compilertechniken Prozessanalyse Dynamische Analyse Datenanalyse Design Pattern Erkennung Analyse- und Visualisierungstechniken Clustering Plagiatserkennung Refactoring Hot Spots Designmetriken. Ziele Heute. Dynamische Analyse
E N D
Übersicht • Quelltextanalyse mit regulären Ausdrücken • Compilertechniken • Prozessanalyse • Dynamische Analyse • Datenanalyse • Design Pattern Erkennung • Analyse- und Visualisierungstechniken • Clustering • Plagiatserkennung • Refactoring • Hot Spots • Designmetriken • ...
Ziele Heute Dynamische Analyse • Debugger • Code Instrumentierung • Profiler / Coverage Tools
Debugger • schrittweise Ausführung • step over / step into • conditional breakpoints • manuell ein mühsames Geschäft • JDI Programmierschnittstelle zur "Fernsteuerung" eines Debuggers • Aufgabe: setzt einen Conditional Breakpoint auf System.out.println und findet Welcome To Fujaba
Code Instrumentierung • System.out.println am Anfang und am Ende jeder Methode=> alle Methodenaufrufe und Rücksprünge nachvollziehbar(Auswertung durch zusätzliches Programm) • noch genauer System.out.println bei jedem If und jeder Schleife=> Statement Abfolge eindeutig rekonstruierbar • Quellcodeinstrumentierung mit Compilertechniken(Aspektorientierte Techniken) • Bei Java oft Byte-Code Instrumentierung
Code Instrumentierung (2) Unzählige Anwendungen: • Logging (für sporadisch auftretende Fehler) • Profiling (kommt gleich) • Code Coverage • Differenzanalyse Probleme: • Trace wächst irrsinnig schnell(Meist Einschränkungen auf bestimmte Packages nötig) • Programm Slow-Down • . . .
Profiler • statistische Auswertung zeilengenauer Traces • DAS Mittel zur Effizienzsteigerung
Aufgaben • Conditional Breakpoint auf System.out.print, findet Welcome to Fujaba • ant tasks in eclipse hinzufügenFujaba/ProjectFiles/IDEA/build.xml • task jcoverage run –noabout ausführenFujaba task jcoverage run –noabout ausführen Reports unter Fujaba/doc vergleichenWelche Zeilen realisieren die AboutBox? • Das gleiche noch mal mit den Easter Egg Bugs ausprobieren