RePaCA: Leveraging Reasoning Large Language Models for Static Automated Patch Correctness Assessment

📄 arXiv: 2507.22580v1 📥 PDF

作者: Marcos Fuster-Pena, David de-Fitero-Dominguez, Antonio Garcia-Cabot, Eva Garcia-Lopez

分类: cs.SE, cs.AI

发布日期: 2025-07-30


💡 一句话要点

RePaCA:利用推理大语言模型进行静态自动化补丁正确性评估

🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture) 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 自动化程序修复 补丁正确性评估 大语言模型 思维链 强化学习 静态分析 软件测试 代码审查

📋 核心要点

  1. 现有静态APCA技术在可靠性、灵活性和透明度方面存在不足,难以准确识别过拟合补丁。
  2. RePaCA利用专门用于思考任务的大语言模型,通过思维链推理分析代码差异,判断补丁的正确性。
  3. RePaCA在Defects4J数据集上取得了83.1%的准确率和84.8%的F1分数,并展现出更强的泛化能力。

📝 摘要(中文)

自动化程序修复(APR)旨在自动纠正软件错误,无需人工干预。然而,现有工具倾向于生成满足测试用例但不修复根本错误的过拟合补丁。为了解决这个问题,自动化补丁正确性评估(APCA)试图识别APR工具生成的过拟合补丁。它可以被视为一种静态方法,这意味着除了原始代码和修复后的代码片段之外,不需要额外的信息。目前的静态技术通常在可靠性、灵活性和透明度方面存在不足。为了解决这些问题,我们引入了RePaCA,一种新颖的静态APCA技术,它利用专门用于思考任务的大语言模型(LLM)。我们的模型被提示输入有缺陷的代码和修复后的代码片段,并引导其生成一个思维链,分析代码差异,推理补丁如何解决根本原因,并最终提供一个二元分类:正确或过拟合。为了专门增强APCA任务的这些推理能力,LLM使用带有群体相对策略优化算法的强化学习进行微调。在标准的Defects4J衍生测试中进行评估时,我们的方法实现了最先进的性能,准确率为83.1%,F1分数为84.8%。此外,我们的模型在不同的数据集上进行训练时,表现出卓越的泛化能力,优于领先的技术。这种推理能力也为补丁评估提供了增强的可解释性。这些发现强调了微调的、推理LLM在通过提高准确性、泛化性和可解释性来推进静态APCA方面的巨大前景。

🔬 方法详解

问题定义:论文旨在解决自动化程序修复(APR)中产生的过拟合补丁问题。现有的静态自动化补丁正确性评估(APCA)方法在可靠性、灵活性和透明度方面存在不足,难以准确判断补丁是否真正修复了bug的根本原因,还是仅仅通过了测试用例。

核心思路:论文的核心思路是利用大语言模型(LLM)强大的推理能力,模拟人类专家分析代码补丁的过程。通过让LLM生成“思维链”,逐步分析代码差异,推理补丁如何解决根本原因,从而更准确地判断补丁的正确性。

技术框架:RePaCA的技术框架主要包含以下几个阶段:1) 输入:将包含bug的代码片段和修复后的代码片段输入LLM。2) 思维链生成:引导LLM生成思维链,分析代码差异,推理补丁的修复逻辑。3) 二元分类:基于思维链的推理结果,LLM输出一个二元分类结果,判断补丁是正确的还是过拟合的。4) 强化学习微调:使用强化学习算法(Group Relative Policy Optimization)对LLM进行微调,提升其在APCA任务上的推理能力。

关键创新:RePaCA的关键创新在于将大语言模型的推理能力引入静态APCA任务。与传统的基于规则或机器学习的静态分析方法不同,RePaCA能够理解代码的语义,进行更深层次的推理,从而更准确地判断补丁的正确性。此外,思维链的生成也增强了模型的可解释性。

关键设计:RePaCA的关键设计包括:1) 使用专门用于思考任务的LLM,例如GPT-3或类似的模型。2) 设计合适的prompt,引导LLM生成有效的思维链。3) 使用Group Relative Policy Optimization算法进行强化学习微调,优化LLM在APCA任务上的性能。4) 构建高质量的训练数据集,包含大量的buggy代码和修复后的代码片段,以及对应的正确或过拟合标签。

📊 实验亮点

RePaCA在Defects4J数据集上取得了显著的性能提升,准确率达到83.1%,F1分数达到84.8%,超越了现有的静态APCA技术。此外,RePaCA在不同的数据集上进行训练时,表现出更强的泛化能力,表明其具有良好的鲁棒性和实用性。思维链的生成也为补丁评估提供了增强的可解释性。

🎯 应用场景

RePaCA可应用于软件开发和测试的各个阶段,例如代码审查、持续集成和自动化测试。它可以帮助开发人员快速识别和修复软件缺陷,提高软件质量和可靠性。此外,RePaCA还可以用于评估自动化程序修复工具的性能,促进APR技术的发展。

📄 摘要(原文)

Automated Program Repair (APR) seeks to automatically correct software bugs without requiring human intervention. However, existing tools tend to generate patches that satisfy test cases without fixing the underlying bug, those are known as overfitting patches. To address this issue, Automated Patch Correctness Assessment (APCA) attempts to identify overfitting patches generated by APR tools. It can be solved as a static approach, meaning that no additional information is needed beyond the original and fixed code snippets. Current static techniques often struggle with reliability, flexibility and transparency. To address these issues, we introduce RePaCA, a novel static APCA technique that leverages Large Language Models (LLMs) specialized in thinking tasks. Our model is prompted with both buggy and fixed code snippets and guided to generate a Chain of Thought that analyses code differences, reasons about how the patch addresses the root cause, and ultimately provides a binary classification: correct or overfitting. To enhance these reasoning capabilities for the APCA task specifically, the LLM is finetuned using Reinforcement Learning with the Group Relative Policy Optimization algorithm. When evaluated on a standard Defects4J-derived test, our approach achieves state-of-the-art performance, with 83.1% accuracy and an 84.8% F1-score. Furthermore, our model demonstrates superior generalization capabilities when trained on different datasets, outperforming the leading technique. This reasoning capability also provides enhanced explainability for the patch assessment. These findings underscore the considerable promise of finetuned, reasoning LLMs to advance static APCA by enhancing accuracy, generalization, and explainability.