Erweiterung und Evaluation eines Werkzeugs zur Identifikation von semantisch ähnlichen Code-Fragmenten

BearbeiterIn:Adrian Kretschmer
Titel:Erweiterung und Evaluation eines Werkzeugs zur Identifikation von semantisch ähnlichen Code-Fragmenten
Typ:
Betreuer:Kreutzer, P.; Kamp, M.; Philippsen, M.
Status:abgeschlossen am 25. Februar 2018
Vorausetzungen:
Thema:

Am Lehrstuhl für Informatik 2 wird derzeit ein Werkzeug entwickelt, das die semantische Ähnlichkeit von Code-Fragmenten bestimmen kann. Das Werkzeug verwendet dazu eine Reihe sog. Basiskomparatoren, die zwei Code-Fragmente jeweils hinsichtlich einer bestimmten Eigenschaft miteinander vergleichen (bspw. die Struktur der jeweiligen Kontrollflussgraphen oder die in den Fragmenten verwendeten Datentypen) und daraus einen Ähnlichkeitswert berechnen. Durch die Kombination mehrerer solcher Basiskomparatoren entsteht eine Hierarchie von Komparatoren, die einen kombinierten Ähnlichkeitswert berechnet. Um Hierarchien zu finden, die bekannte semantische Ähnlichkeitswerte möglichst genau approximieren, wird ein Verfahren aus dem Maschinellen Lernen eingesetzt. Die so gefundenen Hierarchien können anschließend eingesetzt werden, um in großen Software-Archiven nach Paaren semantisch ähnlicher Code-Fragmente zu suchen.

Im Rahmen dieses Masterprojekts sollen das vorhandene Werkzeug erweitert und die Anwendbarkeit des Gesamtverfahrens anhand aussagekräftiger Messungen evaluiert werden.

Bisher unterstützt das Werkzeug nur den Vergleich von Code-Fragmenten auf Methodenebene. Da sich Implementierungen in der Praxis häufig über mehrere Methoden erstrecken, soll das Werkzeug in einem ersten Schritt um eine Möglichkeit zur Inline-Ersetzung aufgerufener Methoden erweitert werden. Dabei soll -- ausgehend von einer ausgewählten Funktion -- ein Teil der (direkt oder indirekt) aufgerufenen Funktionen in den Aufrufer eingebettet werden. Die so generierte Methode kann dann mit anderen (ggf. ebenfalls per Inline-Ersetzung generierten) Implementierungen hinsichtlich der semantischen Ähnlichkeit verglichen werden.

Anschließend sollen die Literatur nach weiteren Verfahren zur Bestimmung der semantischen Ähnlichkeit zweier Code-Fragmente durchsucht und ausgewählte, sinnvoll erscheinende Verfahren als zusätzliche Basiskomparatoren implementiert werden. Das Werkzeug ist so zu erweitern, dass das Verfahren zum Lernen geeigneter Komparatorhierarchien die neuen Basiskomparatoren berücksichtigt. Bei der Implementierung der Komparatoren ist auf eine möglicht geringe Laufzeit zu achten, um den Aufwand des Gesamtverfahrens möglichst klein zu halten.

Im weiteren Verlauf des Masterprojekts soll das in dem Werkzeug implementierte Gesamtverfahren hinsichtlich seiner Tauglichkeit zur Identifikation semantisch ähnlicher Code-Fragmente in großen Software-Archiven evaluiert werden. Dabei sollen unterschiedliche Konfigurationen des Werkzeugs untersucht und miteinander verglichen werden, um eine möglichst gute und gleichzeitig effiziente Konfiguration zu bestimmen. In diesem Zusammenhang soll u.a. herausgefunden werden, welche Basiskomparatoren in welcher Konfiguration notwendig sind, um möglichst gute Ergebnisse erzielen zu können. Neben der Güte der berechneten Ähnlichkeitswerte ist hierbei auch die Laufzeit des Verfahrens zu evaluieren und zu bewerten. Teil der Aufgabe ist es, eine geeignete Menge an Trainings- und Testdaten zu finden bzw. zu generieren. Dazu ist auch die Literatur nach entsprechenden Datensätzen zu durchsuchen. Ebenfalls durchzuführen ist ein Vergleich des implementierten Verfahrens mit aus der Literatur bekannten Verfahren zur Bestimmung der syntaktischen Ähnlichkeit. Es ist zu evaluieren, ob das Verfahren bessere Ergebnisse hinsichtlich semantischer Ähnlichkeit erzielt als es mit syntaktischen Verfahren möglich ist.

Zum Masterprojekt gehören eine kurze Ausarbeitung (10-20 Seiten) sowie ein Vortrag im Rahmen des Kolloquiums. Hierbei sind insbesondere die durchgeführten Messungen und deren Ergebnisse zu dokumentieren und zu diskutieren.

watermark seal