Abstract
背景:
我们如何知道⽣成的补丁是正确的?这一问题对自动程序修复重要
前提:
- 我们可以通过检查每个⽣成的补丁(这句话表达很有问题)是否实现与它所解决的错误相关的代码更改(即行为)来对正确的补
丁进行分类。这样的错误通常由失败的测试⽤例显示。we can triage correct patches by checking whether each generated patch implements code changes (i.e., behaviour) that are relevant to the bug it addresses. “当不同的程序未能通过类似的测试⽤例时,这些程序很可能需要进行类似的代 - similar failing test cases should require similar patches.
本文:
工具:BATS
任务:基于⽆监督学习,通过检查面对失败的测试规范表现出的补丁行为来预测补丁的正确性。 unsupervised learning-based approach to predict patch correctness by checking patch Behaviour Against failing Test Specification
方法:
- 利⽤代码和补丁的深度表⽰学习模型
- 对于给定的失败测试⽤例,⽣成的编码⽤于计算相似性指标
- 搜索历史相似的测试⽤例,识别相关的应⽤补丁
- 评估 APR ⽣成的补丁的正确性
特点:⽆需⼤型标记补丁数据集,受到类似测试⽤例可⽤性的限制,但我们表明它仍然可以补充现有⽅法
训练数据集:收集了包含1,278 个可能的补丁(由开发⼈员编写或由 32 个 APR ⼯具⽣成)
实验:
(测试数据集?)
效果: - BATS 在识别正确补丁时实现了 0.557 到 0.718 之间的 AUC 和 0.562 到 0.854 之间的召回
率,优于最先进的识别正确补丁的技术 - ⽆需⼤型标记补丁数据集
- 当与最近依赖于监督学习的⽅法相结合时,BATS 提⾼了检测正确补丁的整体召回率。