The Remarkable Role of Similarity in Redundancy-based Program Repair
This work addresses a gap in program repair research by providing a systematic analysis for developers and researchers, though it is incremental as it builds on existing similarity concepts.
The paper tackles the problem of characterizing and quantifying the role of code similarity in redundancy-based program repair, showing that similarity analysis can ignore at least 90% of the search space to find correct patches and rank the correct repair ingredient first in 4-33% of cases.
Recently, there have been original attempts to use the concept of "code similarity" in program repair, suggesting that similarity analysis has an important role in the repair process. However, there is no dedicated work to characterize and quantify the role of similarity in redundancy-based program repair, where the patch is composed from source code taken from somewhere else. This is where our paper makes a major contribution: we perform a deep and systematic analysis of the role of code similarity during the exploration of the repair search space. We define and set up a large-scale experiment based on four code similarity metrics that capture different similarities: character, token, semantic and structure similarity. Overall, we have computed 56 million similarity score over 15 million source code components. We show that with similarity analysis, at least 90% of search space can be ignored to find the correct patch. Code similarity is capable of ranking the correct repair ingredient first in 4 - 33 % of the considered cases.