论文标题
交互式补丁过滤作为调试辅助
Interactive Patch Filtering as Debugging Aid
论文作者
论文摘要
人们普遍认识到,程序维修工具需要具有高度的用处,即生成的补丁需要很高的可能性才能正确。但是,从根本上很难确保补丁的正确性,许多工具会损害维修性能的其他方面,例如回忆以获得可接受的精度。 在本文中,我们提出一个问题:较低精度的维修工具仍然有用吗?为了探讨这个问题,我们提出了一种交互式过滤方法来进行修补审查,该方法通过向开发人员提出问题来过滤不正确的补丁。我们的直觉是,错误的补丁仍然可以帮助理解错误。在适当的工具支持下,即使有很多不正确的补丁,收益也超过了成本。 我们将该方法作为Eclipse插件工具(Inpafer)实施,并通过模拟实验和30个开发人员进行了用户研究对其进行了评估。结果表明,我们的方法可以改善开发人员的维修性能,成功修复错误的62.5%,平均调试时间少25.3%。特别是,即使生成的补丁都是不正确的,开发人员的性能也不会大大降低,并且当某些补丁提供有用的修复信息时,例如故障位置和部分修复程序,可以改善。
It is widely recognized that program repair tools need to have a high precision to be useful, i.e., the generated patches need to have a high probability to be correct. However, it is fundamentally difficult to ensure the correctness of the patches, and many tools compromise other aspects of repair performance such as recall for an acceptable precision. In this paper we ask a question: can a repair tool with a low precision be still useful? To explore this question, we propose an interactive filtering approach to patch review, which filters out incorrect patches by asking questions to the developers. Our intuition is that incorrect patches can still help understand the bug. With proper tool support, the benefit outweighs the cost even if there are many incorrect patches. We implemented the approach as an Eclipse plugin tool, InPaFer, and evaluated it with a simulated experiment and a user study with 30 developers. The results show that our approach improve the repair performance of developers, with 62.5% more successfully repaired bugs and 25.3% less debugging time in average. In particular, even if the generated patches are all incorrect, the performance of the developers would not be significantly reduced, and could be improved when some patches provide useful information for repairing, such as the faulty location and a partial fix.