Thema: Explaining neural bug detectors with minimal working examples

Thema: Explaining neural bug detectors with minimal working examples

Grunddaten

Titel Explaining neural bug detectors with minimal working examples
Beschreibung
Neural Bug Detectors [1] sind komplizierte neuronale Netze, die darauf trainiert sind, einfache Fehler im Code zu erkennen (und manchmal auch zu reparieren). Während bestehende Ansätze bei dieser Aufgabe immer effektiver werden, leiden sie oft unter einer hohen Anzahl von Fehlalarmen (d.h. sie finden einen Fehler in einem korrekten Codeschnipsel). 

Für einen Entwickler ist es oft schwierig zu entscheiden, ob etwas ein echter Fehler oder ein Fehlalarm ist: Der Code ist oft convoluted mit Funktionalität, die nichts mit dem Fehler zu tun haben, und die Bug Detectors liefern keine anderen Informationen als den Fehlerort selbst (und eine Reparatur).

In dieser Arbeit zielen wir darauf ab, den Entwickler in seinem Entscheidungsprozess zu unterstützen, indem wir eine gängige Fehlerberichtsstrategie namens Minimal Working Example (MWE) verwenden. Ein MWE ist der kleinste Codeschnipsel, der:

1. noch ausführbar ist und
2. nicht weiter reduziert werden kann, ohne die Ausführbarkeit zu beeinträchtigen und 
3. den gemeldeten Bug noch triggered.

Im Kontext der Neural Bug Detection werden Bugs normalerweise nicht getriggert. Daher verlangen wir stattdessen, dass der Neural Bug Detector denselben Fehler in dem reduzierten Codeschnipsel identifiziert.
 
Heimateinrichtung Department für Informatik
Art der Arbeit praktisch / anwendungsbezogen
Abschlussarbeitstyp Master
Autor Cedric Richter
Status verfügbar
Aufgabenstellung
In dieser Masterarbeit ist es Ihr Ziel, einen Algorithmus zur automatischen Ableitung eines MWE für einen von einem Neural Bug Detector entdeckten Fehler zu entwickeln. Dazu werden Sie eine Variante des Delta Debugging [2] verwenden, um das Programm auf seinen Kern zu reduzieren. Die Herausforderung dieser Masterarbeit besteht darin, eine Funktion zu entwerfen, die prüft, ob etwas ein MWE ist, das im Kontext von Delta Debugging verwendet werden kann.

Die entwickelte Technik soll entweder evaluiert werden:

1. in Form einer Studie (um zu testen, ob Entwickler die abgeleiteten MWEs bevorzugen) oder
2. als eine Strategie zur automatischen Erkennung von Fehlalarmen.

Welche Form der Evaluierung gewählt wird, kann selbst entschieden werden.

[1] Richter, Cedric, and Heike Wehrheim. "Can we learn from developer mistakes? Learning to localize and repair real bugs from real bug fixes." 
[2] Sun, Chengnian, et al. "Perses: Syntax-guided program reduction." 
Voraussetzung
Die Implementierung der entwickelnde Technik findet größtenteils in Python statt. Da einige der genutzten Libraries auch in Java entwickelt, wäre Erfahrung in Java von Vorteil. Auch erste Erfahrung mit Neural Networks und deren Evaluierung wären vorteilhaft.
Erstellt 02.03.2023

Studiendaten

Abteilungen
  • Formale Methoden
Studiengänge
  • Master Informatik
Zugeordnete Veranstaltungen
Ansprechpartner