Overview
Re-opened bugs due to incomplete patches by developers are a major cost driver for software projects. In this project, we aim to investigate patches and identify whether there are alternative execution paths leading to a problematic code line where, e.g., a crash has occurred or an exception has been raised. If these paths are not covered by an existing patch, a tool should inform the developer of related inputs that induce them and recommend potential patches for these paths.
Areas of Research
- Real-World Studies
- We investigate the impact of incomplete patches on software projects. Partial patches are omnipresent in modern software development. Our recent publication at MSR 2024 shows many big projects on GitHub have incomplete patches. The Linux Kernel even tracks the number of incomplete patches. Most of the time, only a small fraction of erroneous inputs are covered by fix attempts. We aim to understand the nature of incomplete patches and how to identify and resolve them.
- Describing Error Paths
- To help understanding incomplete patches, we need to find a way to describe error paths. We conceptualize precise descriptions of error paths in so called "tubes". If we restrict a program to only accept inputs that are not described by a tube, we can guarantee that the program will not crash. However, we want to stay as precise as possible to minimize the number of rejected inputs. In the best case a tube contains all crashing inputs and no other inputs.
- Automated Program Repair
- The final goal of our project is to develop a tool that can automatically repair programs by identifying incomplete patches and suggesting potential fixes. This tool will be largely based on the concept of tubes. We believe that a precise error description is the key to successful repair techniques as current state-of-the-art tools mostly rely on heuristics and do not consider the whole tube but only subsets of it.