Current automated program repair (APR) techniques are far from being practical and useful enough to be considered for realistic debugging. They rely on unrealistic assumptions including the requirement of a comprehensive suite of test cases as the correctness criterion and frequent program re-execution for patch validation; they are not fast; and their ability of repairing the commonly arising complex bugs by fixing multiple locations of the program is very limited. We hope to substantially improve APR's practicality, effectiveness, and usefulness to help people debug. Towards this goal, we envision PracAPR, an interactive repair system that works in an Integrated Development Environment (IDE) to provide effective repair suggestions for debugging. PracAPR does not require a test suite or program re-execution. It assumes that the developer uses an IDE debugger and the program has suspended at a location where a problem is observed. It interacts with the developer to obtain a problem specification. Based on the specification, it performs test-free, flow-analysis-based fault localization, patch generation that combines large language model-based local repair and tailored strategy-driven global repair, and program re-execution-free patch validation based on simulated trace comparison to suggest repairs. By having PracAPR, we hope to take a significant step towards making APR useful and an everyday part of debugging.
翻译:当前自动化程序修复(APR)技术远未达到足以应用于实际调试的实用性和有效性水平。它们依赖不切实际的假设,包括需要完整的测试用例套件作为正确性标准、频繁的程序重新执行以验证补丁;其运行速度不够快;且修复常见复杂缺陷(需修改程序中多个位置)的能力非常有限。我们期望显著提升APR的实用性、有效性和可用性,以协助开发人员进行调试。为实现此目标,我们构想PracAPR——一个在集成开发环境(IDE)中运行的交互式修复系统,能为调试过程提供有效的修复建议。PracAPR无需测试套件或程序重新执行。它假设开发者使用IDE调试器,且程序已在观察到问题的位置暂停执行。系统通过与开发者交互获取问题规约,并基于该规约执行以下流程:无需测试的流分析式故障定位、结合基于大语言模型的局部修复与定制化策略驱动的全局修复的补丁生成,以及基于模拟轨迹比较的免程序重执行补丁验证,最终提出修复方案。通过构建PracAPR,我们期望朝着使APR真正有用并成为日常调试组成部分的目标迈出重要一步。