Improving the Accuracy of Refactoring Detection

With the development of refactoring technology, refactoring detection technology as its reverse technology has also been greatly progressed and applied, the technology has important significance and role for code optimisation, code review and code reliability. Over the past 20 years, the refactorin...

Full description

Saved in:
Bibliographic Details
Main Author: Tan, Liang
Contributors: Bockisch, Christoph (Prof. Dr) (Thesis advisor)
Format: Doctoral Thesis
Language:English
Published: Philipps-Universität Marburg 2023
Subjects:
Online Access:PDF Full Text
Tags: Add Tag
No Tags, Be the first to tag this record!

Mit der Entwicklung der Refactoring-Technologie wurde auch die Refactoring-Erkennungstechnologie als deren Gegenstück stark weiterentwickelt und angewandt, Die Technologie ist von großer Bedeutung und spielt eine wichtige Rolle bei der Code-Optimierung, Code-Überprüfung und Code-Zuverlässigkeit. In den letzten 20 Jahren hat sich die Refactoring-Erkennungstechnik von einem theoretischen Konzept zu ausgereiften Ansätzen und Werkzeugen entwickelt. Aufgrund der verschiedenen Komplexitäten, die beim Refactoring von Code auftreten, gibt es jedoch immer noch einige Probleme mit diesen Erkennungswerkzeugen: Auswahl der Werkzeuge, Erkennung von verschachtelten Refactorings, falsch-negative Ergebnisse aufgrund von Matching-Algorithmen usw. Da die Anforderungen an die Erkennung steigen, ist das Streben nach einer besseren Erkennungsleistung (Präzision und Wiedererkennung) und nach allgemeineren Erkennungswerkzeugen zu einem der wichtigsten Forschungsziele meiner Doktorarbeit geworden. Die wichtigsten Forschungskomponenten dieser Arbeit sind: Erstens habe ich zu Beginn meiner Forschung eine Meta-Analyse der Refactoring-Erkennung durchgeführt und die Erkennungsleistung von vier gängigen Refactoring-Erkennungswerkzeugen unter denselben Maßstäben bewertet, ihre Stärken und Schwächen analysiert und verglichen sowie neue Forschungsfragen und Forschungsrichtungen identifiziert. Zweitens habe ich die Untersuchung und Erkennung von verschachtelten Refactorings als einen blinden Fleck in bestehenden Ansätzen identifiziert und daher eine Demonstration der Machbarkeit der Verschachtelung mehrerer Refactor-Typen miteinander durchgeführt. Darüber hinaus habe ich einen Ansatz entwickelt, der verschachtelte Refactorings auf der Basis von einzelnen Refactoring-Daten erkennen kann, indem ich manuell definierte Refactoring-Merkmale mit einem Random-Forest-Algorithmus kombiniert habe und so in der Lage war, alle 35 semantisch sinnvollen Verschachtelungen mit 91,4% Genauigkeit zu erkennen. Dann konzentrierte ich mich auf die Merkmale, die während des Refactoring-Prozesses auftauchten, und wertete die Refactoring-Informationen im Diff aus, um RefDiff zu helfen, die Erkennungsleistung zu verbessern. Während der Forschung entwickelte ich Diff Extractor und Diff Encoder zum Extrahieren und Kodieren von Diffs, transformierte Diffs in Arrays für das Refactoring Information Mining und trainierte zwei Modelle: 1. Diff Structure Feature Model, das die Art des Refactorings anhand der strukturellen Merkmale der refactorierten Diffs bestimmt und als Ergebnisprüfer verwendet werden kann, der die Gesamtleistung von RefDiff verbessert, indem er die RefDiff-Erkennungsergebnisse auf falsch-positive Ergebnisse überprüft. 2. Das Diff Feature Matching Network, das auf der Grundlage der Übereinstimmung der entfernten und hinzugefügten Teile des refaktorisierten Diffs trainiert wird, ist sehr robust und kann das Problem des fehlenden Abgleichs lösen, das durch den Ansatz des Wortfrequenzabgleichs verursacht wird. Schließlich entwerfe ich einen Ansatz, der die beiden Modelle integriert, Diff Extractor und Diff Encoder auf der Grundlage der Eigenschaften von Diff-Merkmalen optimiert, Flags zu Diff auf der Grundlage der Refactoring-Eigenschaft hinzufügt, einen neuen Kodierungsansatz entwickelt, der die Einzigartigkeit von Token betont, bessere Modelle trainiert und einen Modell-Kreuzvalidierungsmechanismus aufbaut, der es uns ermöglicht, Erkennungsergebnisse mit hohem Vertrauensniveau zu erhalten. Wir haben gezeigt, dass unser Ansatz, RefDiff-Model genannt, nicht nur die Präzision von RefDiff 2.0 auf 100 % verbessert und die Wiedererkennung auf 96,1 % erhöht, sondern auch weiterhin Erkennungsaufgaben in mehreren Programmiersprachen unterstützt.