论文
RefactorAssist:可靠代码重构的代理优化
RefactorAssist: Agentic Refinement for Reliable Code Refactoring
摘要
代码重构旨在增强源代码的内部结构而不影响其功能行为。 大语言模型 (LLM) 的最新进展展示了自动化软件工程任务(例如代码重构)的潜力。然而,LLM 产生的重构经常会引入细微的错误,导致功能行为改变和单元测试失败,从而限制了它们的实际采用。为了解决 LLM 生成的重构的局限性,我们分析了其失败的根本原因,并开发了 RefactorAssist 代理来提高 LLM 生成的重构的功能正确性。为此,我们使用 10 个开源 Java 项目及其本机测试套件,并手动评估 LLM 生成的重构失败单元测试的原因。然后,我们设计一种代理方法,利用单元测试日志、错误解释、项目上下文检索和代码差异来指导迭代重构。我们的研究结果表明,失败的主要原因是上下文误解/幻觉(24.3%)、不正确或不一致的重命名(15.3%)、添加新功能或变量(13.7%)、代码不完整(11.3%)、语法和结构错误(9.7%)、未处理边缘情况(9%)、类型处理不当(8.7%)以及范围之外的变量(8%)。为了使我们的方法具有成本效益,RefactorAssist 首先对丢失的导入、不平衡的括号和编译错误应用静态修复步骤,而无需 LLM。对于剩余故障,RefactorAssist 结合了错误日志和代码差异,在最佳配置下实现了剩余故障高达 70.8% 的修复率和 94.2% 的累积通过率。这些结果表明,静态检查和测试引导的上下文感知代理修复可以提高 LLM 生成的重构的可靠性,使它们更接近开发人员工作流程中的实际集成。