CodeTaste: Can LLMs Generate Human-Level Code Refactorings?
作者: Alex Thillen, Niels Mündler, Veselin Raychev, Martin Vechev
分类: cs.SE, cs.AI, cs.LG
发布日期: 2026-03-04
💡 一句话要点
CodeTaste:评估LLM在代码重构中能否达到人类水平,并提出改进方法
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码重构 大型语言模型 代码生成 软件工程 基准测试
📋 核心要点
- 现有LLM编码智能体生成的代码常存在复杂性、重复和架构债务问题,缺乏有效的重构能力。
- 论文提出CodeTaste基准,用于评估LLM在代码重构任务中的表现,并分析其与人类开发者选择的差异。
- 实验表明,LLM在详细指定重构时表现良好,但在发现人类重构选择方面存在差距,提出-然后-实现分解能提升性能。
📝 摘要(中文)
大型语言模型(LLM)编码智能体可以生成可用的代码,但其解决方案通常会累积复杂性、重复和架构债务。人类开发者通过重构来解决这些问题:重构是一种保持行为不变的程序转换,可以改进结构和可维护性。本文研究了LLM智能体是否(i)能够可靠地执行重构,以及(ii)能否识别出人类开发者在真实代码库中实际选择的重构。我们提出了CodeTaste,这是一个从开源存储库中的大规模多文件更改中挖掘出来的重构任务基准。为了对解决方案进行评分,我们将存储库测试套件与自定义静态检查相结合,这些静态检查使用数据流推理来验证是否移除了不需要的模式并引入了所需的模式。我们的实验结果表明,前沿模型之间存在明显的差距:当详细指定重构时,智能体表现良好,但当仅提供改进的重点领域时,通常无法发现人类的重构选择。提出-然后-实现分解改进了对齐,并且在实现之前选择最佳对齐的提案可以产生进一步的收益。CodeTaste提供了一个评估目标和一个潜在的偏好信号,用于将编码智能体与真实代码库中的人类重构决策对齐。
🔬 方法详解
问题定义:论文旨在解决LLM在代码重构任务中表现不佳的问题。现有LLM虽然能生成代码,但缺乏对代码质量和可维护性的优化,导致代码库逐渐变得难以维护。现有方法难以让LLM准确地模仿人类开发者在实际项目中的重构行为。
核心思路:论文的核心思路是构建一个更贴近真实场景的重构任务基准,并设计相应的评估指标,以衡量LLM在重构任务中的表现。同时,探索不同的策略来提升LLM在重构任务中的性能,使其更接近人类开发者的水平。
技术框架:论文提出了CodeTaste基准,该基准包含从开源项目中挖掘的大规模多文件更改。为了评估LLM的重构结果,论文结合了存储库的测试套件和自定义的静态检查。静态检查使用数据流推理来验证重构是否正确地移除了不需要的模式,并引入了所需的模式。论文还探索了“提出-然后-实现”的分解策略,将重构任务分解为提案生成和实现两个阶段。
关键创新:论文的关键创新在于构建了一个更贴近真实场景的重构任务基准CodeTaste,并设计了相应的评估指标。此外,论文还提出了“提出-然后-实现”的分解策略,该策略可以显著提升LLM在重构任务中的性能。
关键设计:CodeTaste基准中的重构任务是从开源项目中挖掘的真实代码更改,保证了任务的真实性和复杂性。评估指标结合了测试套件和静态检查,可以更全面地评估重构结果的正确性和质量。“提出-然后-实现”分解策略的关键在于如何生成高质量的重构提案,以及如何选择最佳的提案进行实现。具体的参数设置、损失函数、网络结构等技术细节在论文中未详细描述,属于未知信息。
📊 实验亮点
实验结果表明,现有的LLM在重构任务中与人类开发者存在明显差距。当详细指定重构时,LLM表现良好,但当仅提供改进的重点领域时,通常无法发现人类的重构选择。“提出-然后-实现”分解策略显著提升了LLM的性能,选择最佳对齐的提案进行实现可以进一步提高性能。
🎯 应用场景
该研究成果可应用于自动化代码重构、代码质量评估、以及提升LLM编码智能体的代码生成能力。通过CodeTaste基准,可以更好地评估和比较不同LLM在代码重构方面的性能,并为LLM的训练提供更有效的反馈信号。未来,该研究有望帮助开发者更高效地维护和改进代码库。
📄 摘要(原文)
Large language model (LLM) coding agents can generate working code, but their solutions often accumulate complexity, duplication, and architectural debt. Human developers address such issues through refactoring: behavior-preserving program transformations that improve structure and maintainability. In this paper, we investigate if LLM agents (i) can execute refactorings reliably and (ii) identify the refactorings that human developers actually chose in real codebases. We present CodeTaste, a benchmark of refactoring tasks mined from large-scale multi-file changes in open-source repositories. To score solutions, we combine repository test suites with custom static checks that verify removal of undesired patterns and introduction of desired patterns using dataflow reasoning. Our experimental results indicate a clear gap across frontier models: agents perform well when refactorings are specified in detail, but often fail to discover the human refactoring choices when only presented with a focus area for improvement. A propose-then-implement decomposition improves alignment, and selecting the best-aligned proposal before implementation can yield further gains. CodeTaste provides an evaluation target and a potential preference signal for aligning coding agents with human refactoring decisions in realistic codebases.