[论文解读] The Remarkable Role of Similarity in Redundancy-based Program Repair
本文通过系统分析1500万个代码组件中的四种相似性度量方法——字符级、标记级、语义级和结构级——研究了代码相似性在基于冗余的程序修复中的作用。结果表明,相似性分析可将搜索空间减少至少90%,其中TFIDF方法最高可减少99.56%;在4%至33%的情况下,正确修复成分能排在首位,尤其在包含上下文信息时效果更佳。
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.
研究动机与目标
- 系统表征并量化代码相似性在基于冗余的程序修复中的作用。
- 评估不同相似性度量方法(字符级、标记级、语义级、结构级)对修复搜索空间缩减的影响。
- 研究在修复中引入错误语句周围上下文信息对基于相似性的修复有效性的影响。
- 提供一种有原则的、受控的分析,将相似性作用与故障定位或补丁验证等其他修复因素隔离。
- 提供实证证据,证明利用相似性对修复成分进行优先排序的可行性,并避免对看似合理但错误的补丁产生过拟合。
提出的方法
- 将相似性分析作为简化后的基于冗余的修复流程中唯一的组件,去除随机性、故障定位和验证,以纯粹聚焦于相似性。
- 定义四种相似性度量方法:字符级(n-gram)、标记级(基于AST)、语义级(基于嵌入)和结构级(AST树相似性),以捕捉多样化的代码相似性。
- 从实际提交中构建214个真实世界的修复任务,将每个任务建模为一个排序问题:根据正确性可能性对候选修复成分进行排序。
- 测量被移除的错误语句与候选修复语句之间的相似性,以及它们周围上下文之间的相似性。
- 使用TF-IDF、标记级、语义级和结构级相似性得分对修复候选进行排序,并评估其将正确补丁排在首位的表现。
- 对1500万个代码组件进行大规模计算,生成5600万组相似性得分,以确保统计稳健性。
实验结果
研究问题
- RQ1代码相似性在基于冗余的程序修复中能在多大程度上减少搜索空间?
- RQ2不同相似性度量方法(字符级、标记级、语义级、结构级)在将正确修复成分排在首位方面的有效性如何?
- RQ3在错误语句周围引入上下文信息是否能提升基于相似性的修复效果?
- RQ4上下文感知的相似性对搜索空间缩减和排序准确率有何影响?
- RQ5四种相似性度量方法之间以及与修复有效性之间存在何种相关性?
主要发现
- 相似性分析可将修复搜索空间减少至少91.87%,使用TFIDF度量方法最高可减少99.56%。
- 根据所用相似性度量方法的不同,正确修复成分被排在首位的比例为4%至33%,其中TFIDF表现最佳,达到30%。
- 在错误语句周围引入方法级别的上下文信息可提升基于相似性的排序效果,相比无上下文分析,可额外减少24%的搜索空间。
- TFIDF表现出最高有效性,在许多情况下能将正确修复成分及其源代码上下文排在候选集前1%。
- 研究证实,纯粹的语法相似性(如标记级和字符级)与修复有效性之间存在强烈相关性,表明混合相似性方法具有潜力。
- 基于相似性的排序能有效避免对看似合理但错误的补丁产生过拟合,通过优先选择语义和结构上相关的代码片段实现。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。