论文

CausalRepair:通过双切片弥合基于 大语言模型 的自动化程序修复中的因果关系差距

CausalRepair: Bridging the Causality Gap in Large Language Model-Based Automated Program Repair via Dual-Slicing

上下文与知识上下文工程

摘要

自动程序修复 (APR) 最近受益于 大语言模型 (LLM),但其有效性在很大程度上取决于修复上下文。现有的基于 LLM 的 APR 方法存在因果关系差距:测试上下文可能有噪声或不完整,而从静态分析得出的源上下文通常包含不相关和未执行的代码,从而误导 LLM 识别真正的根本原因。为了解决这个问题,我们提出了 CausalRepair,一个基于最小因果上下文(即解释故障所需的基本依赖关系)的对话驱动的 APR 框架。 CausalRepair 采用双切片策略:上下文感知的静态切片净化了测试语义,而基于执行跟踪的动态切片捕获源代码中精确的运行时依赖性。它们共同构建紧凑的、因果相关的上下文来指导迭代修复。我们使用 DeepSeek-V3 评估 Defects4J V1.2、V2.0 和 Defects4J-Trans 上的 CausalRepair。 CausalRepair 正确修复了 Defects4J 上的 313 个错误,优于 ReinFix 和 TSAPR 等最先进的方法,同时将每个错误的平均修复成本降低至 0.029 美元。