Konzeption und Umsetzung Neuronale Netzen zur Verbesserung von Codequalität

Aus SDQ-Wiki
Zur Navigation springen Zur Suche springen
Ausschreibung (Liste aller Ausschreibungen)
Typ Bachelorarbeit oder Masterarbeit
Aushang
Betreuer Wenden Sie sich bei Interesse oder Fragen bitte an:

Robert Heinrich (E-Mail:: heinrich@kit.edu, Telefon:: +49-721-608-45963), Daniel Zimmermann (E-Mail:: dzimmer@fzi.de, Telefon:: +49-721-9654-647)

Neuronale Netze werden heutzutage in vielen unterschiedlichen Bereichen eingesetzt, auch zum Verbessern von Codequalität. Aktuelle Forschung fokussiert sich dazu auf das Detektieren und Verbessern von Problemen im Code. Allerdings gibt es wenige Referenzen darüber, wie man den Code für eine gegebene Aufgabe sinnvoll vorverarbeiten und darstellen kann. Die meisten verwandten Ansätze beschreiben die Vorverarbeitung des Codes, um eine passende Repräsentation mit geeignetem Vokabular zu erhalten, nur lückenhaft. Des Weiteren werden selten Gründe für bestimmte Vorverarbeitungsschritte angeführt. Ein weiteres Problem dieser Ansätze ist, dass zwar spezielle neuronale Netzarchitekturen empfohlen werden, diese aber meist für die ausgewählte Repräsentation optimiert sind.

Aktuell nutzen wir für unseren Ansatz Datensätze mit synthetisch generierten Testfällen. Dazu zählt beispielsweise die Juliet Test Suite, welche eine Vielzahl an gekennzeichneten Testfällen zur Verfügung stellt. Es zeigte sich, dass die eingesetzten Neuronalen Netze Probleme im Code mit hoher Genauigkeit erkennen können, jedoch spiegeln diese synthetisch generierten Datensätzen den realen Code nur unzureichend wider.

Ziel dieser Arbeit ist die Konzeption und der Aufbau einer Experimentierumgebung zur Untersuchung der oben genannten Fragestellungen. Dabei sollen Repositories mit realem Code ausgelesen und verschiedene Werkzeuge zur statischen Codeanalyse auf dem Code ausgeführt werden. Die durch die statische Codeanalyse identifizierten Verletzungen der Codequalität soll dazu verwendet werden Neuronale Netze zu trainieren und zu analysieren, um die oben genannten Lücken zu adressieren.