Software bugs significantly contribute to software cost and increase the risk of system malfunctioning. In recent years, many automated program-repair approaches have been proposed to automatically fix undesired program behavior. Despite of their great success, specific problems such as fixing bugs with partial fixes still remain unresolved. A partial fix to a known software issue is a programmer's failed attempt to fix the issue the first time. Even though it fails, this fix attempt still conveys important information such as the suspicious software region and the bug type. In this work we do not propose an approach for program repair with partial fixes, but instead answer a preliminary question: Do partial fixes occur often enough, in general, to be relevant for the research area of automated program repair? We crawled 1500 open-source C repositories on GitHub for partial fixes. The result is a benchmark set of 2204 benchmark tasks for automated program repair based on partial fixes. The benchmark set is available open source and open to further contributions and improvement.
翻译:软件错误大大地增加了软件成本和系统故障的风险。 近年来,许多自动程序修复方法被提议自动修正不理想的程序行为。 尽管它们取得了巨大成功, 诸如用部分修补方法修补错误等具体问题仍未解决。 部分修补已知软件问题是程序员第一次试图修补问题失败。 尽管它失败了, 但这项修补尝试仍然传达了重要信息, 如可疑软件区域和错误类型。 在这项工作中, 我们不建议用部分修补来修补程序, 而是回答一个初步问题: 部分修补经常发生, 一般来说, 是否与自动修补程序的研究领域相关? 我们在 GitHub 的 1500 个开源 C 库中爬了 部分修补。 结果为基于部分修补的自动程序修理设定了 2204 基准任务。 基准集为开放源, 可供进一步贡献和改进 。