故障定位是否会击败新的尝试?测试引导代码修复的安慰剂对照研究
Does Fault Localization Beat a Fresh Attempt? A Placebo-Controlled Study of Test-Guided Code Repair
摘要
错误定位可以将代码模型的修复集中在失败测试所涉及的语句上,但是有针对性的编辑可能仅仅因为它很小而成功,并且第二个模型调用可能在根本不使用失败的情况下成功。我们将这些解释分开,将三个臂应用于相同的失败候选:盲全解决方案重采样、基于频谱的定位,然后进行可疑跨度填充,以及在不相交的随机代码跨度上进行相同长度的填充。跨越三个冻结的 26-32B 模型、三个基准测试和 488 个失败的候选模型,加上来自第三个系列的单独声明的 24B 第四个模型,得出三个结果。首先,本地化很少可用:只有 9.0% 的未通过测试的候选人公开了未通过的公开测试以及可用的频谱。其次,在可从强大套件中定位的 177 个候选者中,局部填充在匹配的尝试计数(3:40,p = 3.0 x 10^-9)处明显输给了盲重采样,这与我们的假设相反;损失在第三个家庭中以 -11.3 点复制(95% CI [-16.6,-6.8]),并且扩大编辑并不能挽救它。第三,针对随机跨度安慰剂局部填充引线汇集(11:1,Holm 调整 p = .019),但在我们的发货计划指定主要分析(最佳 Holm p = .087)的分析下,该引线在没有单独模型中解析,因此我们将位置效应报告为暗示性而不是确定的。随着词元缩小,重新定价尝试不会推翻这一点:一次跨度尝试花费 21.7 个生成的词元,而 371.1 个词元,但 16 次局部尝试达到 6.8%,而一次盲目尝试已经达到 10.1%。填充在 48.9% 的尝试中逐字重现了删除的跨度,这就是为什么更多的预算没有帮助。我们将每个本地化结论限制在测试的 24-32B 型号上。