在自动化程序修复(APR)领域,大型语言模型(LLMs)带来了显著提升,但仍存在两个主要限制。
首先,原始执行跟踪往往过于庞大且重复,无法作为有效的模型上下文。其次,重复的补丁采样可能会生成不同的实现,但却无法提供明显不同的根本原因假设或修复策略。
为了解决这些问题,我们提出了CT-Repair,这是一种将静态和动态证据表示为可查询的代码属性图(CPG)和时间执行图(TEG)的智能APR框架。CT-Repair采用三阶段的过滤管道来构建紧凑的TEG。三个基于有限状态机的智能体从静态、动态和混合视角分析每个bug,并独立产生基于证据的修复策略。策略指导的生成过程将这些策略实例化为候选补丁,并使用验证反馈来优化最有前景的策略。
我们在Defects4J v3.0上评估了CT-Repair,处理了854个Java bug。在混合模型配置下,CT-Repair成功修复了489个bug。在受控的GPT-5.4-mini配置下,修复了388个bug,分别比ReinFix和RepairAgent多出19个和30个。从三个证据视角的联合修复了比最强单一视角多出99个bug。过滤管道还压缩了运行时证据,执行过滤平均缩小候选方法范围94.85%,而行为过滤进一步减少了保留的运行时记录55.97%。这些结果表明,结构化的运行时证据和多视角推理能够在不单靠更大补丁生成预算的情况下,提高修复的有效性。
博主点评: CT-Repair的创新之处在于其多视角分析和证据驱动的修复策略,这种方法显著提高了程序修复的成功率,尤其是在面对复杂的bug时。通过有效地利用静态和动态信息,CT-Repair展现了未来APR领域的潜力,值得开发者深入研究与应用。