IDEFIX
Identifying and Fixing Incomplete Patches (2022-2025)
Wieder geöffnete Fehler aufgrund unvollständiger Patches von Entwicklern sind ein großer Kostentreiber für Softwareprojekte. In diesem Projekt wollen wir Patches untersuchen und ermitteln, ob es alternative Ausführungspfade gibt, die zu einer problematischen Codezeile führen, in der z.B. ein Absturz aufgetreten ist oder eine Ausnahme ausgelöst wurde. Wenn diese Pfade nicht von einem vorhandenen Patch abgedeckt werden, sollte ein Tool den Entwickler über entsprechende Eingaben informieren, die sie hervorrufen und potenzielle Patches für diese Pfade empfehlen. Um diese Idee zu verdeutlichen, betrachten wir ein Programm, bei dem fix1 den ursprünglichen Patch darstellt, der Pfad1−3 abdeckt, und Pfad4−7 dem Entwickler unbekannt sind (Abb. 1).
Figure 1: Visualisierung von unvollständigen Patches
Diese Pfade würden den Fehler möglicherweise erneut aufrufen. Daher zielen wir darauf ab, dem Entwickler die Aufteilung des Eingaberaums zu präsentieren, der die Pfad4−7 abdecken würde, und im besten Fall auch die ergänzenden Patches Fix2 und Fix3 bereitstellt. Basierend auf dieser Vision wollen wir die folgenden Forschungsfragen lösen: (a) Wie können die alternativen fehlerauslösenden Pfade effizient und effektiv konstruiert werden? (b) Wie kann man Patches erzeugen, die den durch die alternativen Pfade verursachten Fehler beheben würden? Für die erste Frage werden wir Techniken entwickeln und systematisch evaluieren, die auf gerichteter symbolischer Ausführung und zeugenbasierter Softwareverifikation basieren. Wir werden ähnliche Ausführungspfade in Röhren zusammenführen, um das Softwaresystem und den Fehler besser zu verstehen. Für die zweite Forschungsfrage werden wir einen synthesebasierten Patch-Generator erstellen, der Code synthetisiert, der fehlerhafte Röhren korrigiert.
Beteiligte Personen:
- Prof. Dr. Lars Grunske
- Prof. Dr. Dirk Beyer
IDEFIX wird gefördert durch die Deutsche Forschungsgemeinschaft (DFG).