Clustering von ähnlichen Code-Fragmenten

Student:Patrick Kreutzer
Title:Clustering von ähnlichen Code-Fragmenten
Type:
Advisors:Dotzler, G.; Ring, M.; Eskofier, B.; Philippsen, M.
State:submitted on November 11, 2015
Prerequisits:
Topic:

Hintergrund
Software wird im Laufe der Zeit ständig verändert. Die Gründe für die Änderungen sind vielfältig. Häufig wurden Fehler gefunden, die behoben werden müssen, oder die API von verwendeten Modulen hat sich geändert und die eigene Software muss angepasst werden. Häufig taucht ein Fehler nicht nur an einer Stelle auf, sondern an mehreren. API-Änderungen verursachen eine Folge von sich mehr oder weniger ähnelnden Code-Anpassungen. Um Zeit zu sparen und um mögliche Fehler zu vermeiden, wäre gerade in diesen Fällen ein Werkzeug hilfreich, das dem Programmierer die Änderungen abnimmt. Ein Weg dies zu realisieren, ist das am Lehrstuhl entwickelte Code-Optimierungswerkzeug, das alle Stellen im Projekt mit den zu modifizierenden Stellen aufzeigt und für jede Stelle den neu angepassten Quellcode als Verbesserung vorschlägt. Da viele Bibliotheken in mehr als einem Projekt verwendet werden und sich ähnliche Fehler in anderen unabhängigen Projekten wiederfinden, können die einmal gemachten Änderungen von einem Code-Optimierungswerkzeug gelernt und dann auch in anderen Projekten oder Projektteilen angewandt werden.

Thema
Am Lehrstuhl wird ein Werkzeug zur Extraktion von Code-Änderungsmustern aus git-Archiven entwickelt. Um die Änderungsmuster zu erzeugen sucht das Werkzeug nach Gruppen von ähnlichen Code-Änderungen in den Archiven. In dieser Abschlussarbeit soll das bisher eingesetzte naive Gruppierungsverfahren durch ein Clustering-Verfahren ersetzt werden. Als Eingabedaten soll neben der syntaktischen Ähnlichkeit der Code-Änderungen auch die Ähnlichkeit der symbolischen Ausführungsergebnisse verwendet werden.

Meilensteine

  • Einarbeitung in die verschiedenen Clustering-Verfahren
  • Aufbereitung der Daten aus der symbolischen Ausführung für Clustering-Verfahren
  • Anwendung eines Clustering-Verfahrens auf die Daten (Masterarbeit: mehrere Verfahren)
  • Evaluation der Auswirkung aller Ähnlichkeitsmerkmale auf das Verfahren
  • Ausarbeitung

Literatur

  • http://www.cs.waikato.ac.nz/~ml/weka/
  • C. Bishop, Pattern Recognition and Machine Learning, Springer, 2007
  • Kamp, Marius: Entwicklung eines Werkzeugs zum Vergleich von Code-Fragmenten durch symbolische Ausführung. Masterarbeit, Lehrstuhl für Informatik 2, Friedrich-Alexander-Universität Erlangen-Nürnberg, Oktober 2014.
  • Romstöck, Christoph: Entwicklung eines Werkzeugs zur Identifizierung vergleichbarer Code-Modifikationen in Software-Archiven. Masterarbeit, Lehrstuhl für Informatik 2, Friedrich-Alexander-Universität Erlangen-Nürnberg, Dezember 2013.
  • Dotzler, G.; Veldema, R.; Philippsen, M.: Annotation support for generic patches.
watermark seal