What a diff makes: automating code migration with large language models

📄 arXiv: 2511.00160v1 📥 PDF

作者: Katherine A. Rosenfeld, Cliff C. Kerr, Jessica Lundin

分类: cs.SE, cs.AI

发布日期: 2025-10-31

备注: 10 pages, 8 figures


💡 一句话要点

利用大型语言模型和代码差异自动化代码迁移,提升软件兼容性。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码迁移 大型语言模型 软件兼容性 代码差异 自动化 软件维护 版本控制

📋 核心要点

  1. 现有软件依赖频繁更新,可能导致依赖这些软件的项目出现兼容性问题,代码迁移成为挑战。
  2. 论文提出利用大型语言模型,结合代码差异信息,自动进行代码迁移,解决版本兼容性问题。
  3. 实验表明,结合代码差异的上下文能显著提升LLM的代码迁移性能,并开源了数据集和工具包。

📝 摘要(中文)

本文探讨了使用大型语言模型(LLMs)进行代码迁移的问题,特别是维护软件依赖项在主要和次要语义版本变更时的兼容性。研究表明,包含代码差异(diffs)的上下文可以显著提高LLMs的性能,甚至优于直接使用代码。为此,作者提供了一个数据集,以促进该领域的研究,并开源了一个名为AIMigrate的Python包,用于辅助代码库的迁移。在TYPHOIDSIM从STARSIM版本迁移的实际案例中,AIMigrate在单次运行中正确识别了65%的所需更改,多次运行后增加到80%,其中47%的更改被完美生成。

🔬 方法详解

问题定义:论文旨在解决软件依赖更新时,代码库的自动迁移问题。现有方法在处理版本更新带来的兼容性问题时,往往需要大量的人工干预,效率低下且容易出错。尤其是在大型项目中,手动迁移的成本非常高昂。

核心思路:论文的核心思路是利用大型语言模型(LLMs)的强大代码理解和生成能力,结合代码差异(diffs)信息,来自动化代码迁移过程。通过分析新旧版本之间的差异,LLM可以更好地理解需要修改的代码部分,并生成相应的迁移代码。

技术框架:整体流程如下:1. 输入:旧版本代码、新版本代码以及它们之间的差异(diff)。2. LLM处理:将这些信息作为上下文输入到LLM中。3. 代码生成:LLM根据上下文生成迁移后的代码。4. 评估:使用测试覆盖率和变更比较等指标评估迁移效果。论文还开源了AIMigrate工具包,方便用户使用。

关键创新:最重要的创新点在于利用代码差异(diffs)作为LLM的上下文信息。相比于直接使用代码,diffs能够更清晰地突出需要修改的部分,从而引导LLM更准确地生成迁移代码。这种方法充分利用了LLM的代码理解能力,并结合了版本控制系统的差异分析能力。

关键设计:论文的关键设计包括:1. 数据集的构建:为了训练和评估模型,作者构建了一个包含代码迁移案例的数据集。2. AIMigrate工具包:该工具包封装了代码迁移的流程,并提供了API方便用户使用。3. 评估指标:使用测试覆盖率和变更比较等指标来评估迁移效果,确保迁移后的代码能够正常工作。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,使用包含代码差异的上下文可以显著提高LLM的代码迁移性能。在TYPHOIDSIM到STARSIM的迁移案例中,AIMigrate在单次运行中正确识别了65%的所需更改,多次运行后增加到80%,其中47%的更改被完美生成。这些结果表明,该方法在实际代码迁移中具有很高的应用价值。

🎯 应用场景

该研究成果可应用于软件开发和维护领域,帮助开发者更高效地进行代码迁移,降低维护成本,并减少因依赖更新而引入的错误。尤其是在大型软件项目中,自动化代码迁移能够显著提升开发效率,并保证软件的稳定性和兼容性。未来,该技术有望集成到CI/CD流程中,实现代码的持续自动化迁移。

📄 摘要(原文)

Modern software programs are built on stacks that are often undergoing changes that introduce updates and improvements, but may also break any project that depends upon them. In this paper we explore the use of Large Language Models (LLMs) for code migration, specifically the problem of maintaining compatibility with a dependency as it undergoes major and minor semantic version changes. We demonstrate, using metrics such as test coverage and change comparisons, that contexts containing diffs can significantly improve performance against out of the box LLMs and, in some cases, perform better than using code. We provide a dataset to assist in further development of this problem area, as well as an open-source Python package, AIMigrate, that can be used to assist with migrating code bases. In a real-world migration of TYPHOIDSIM between STARSIM versions, AIMigrate correctly identified 65% of required changes in a single run, increasing to 80% with multiple runs, with 47% of changes generated perfectly.