MIGRATION-BENCH:从 Java 8 的仓库级代码迁移基准测试

发表
Xinle Sheila LiuXinle Sheila Liu 提交
作者: Linbo LiuLinbo Liu, Xinle Sheila LiuXinle Liu, Qiang Zhou, Lin Chen, Yihan Liu, Hoan Nguyen, Behrooz Omidvar-TehraniBehrooz Omidvar-Tehrani, Xi Shen, Jun Huan, Omer Tripp, Anoop Deoras

摘要

近年来,随着强大的大型语言模型(LLM)的快速发展,许多软件工程任务现在可以使用 LLM 来解决,从而显著提高了生产力和可扩展性。尽管已经开发了许多基准数据集来评估这些模型的编码能力,但它们主要侧重于问题解决和问题修复任务。与此不同,我们引入了一个新的编码基准 MIGRATION-BENCH,其独特重点是代码迁移。MIGRATION-BENCH 旨在成为从 Java 8 迁移到最新长期支持(LTS)版本(Java 17, 21)的全面基准,MIGRATION-BENCH 包含一个完整数据集及其精选的子集,分别包含 5,102 个和 300 个仓库。Selected 是根据复杂性和难度精心策划的具有代表性的子集,为代码迁移领域的研究提供了多功能资源。此外,我们提供了一个全面的评估框架,以促进在此挑战性任务上对 LLM 进行严格和标准化的评估。我们进一步提出了 SD-Feedback,并证明 LLM 可以有效地处理仓库级别的代码迁移到 Java 17。对于使用 Claude-3.5-Sonnet-v2 的精选子集,SD-Feedback 在最小迁移和最大迁移方面的成功率(pass@1)分别达到了 62.33% 和 27.00%。基准数据集和源代码可在以下地址获取:https://huggingface.co/collections/AmazonSciencehttps://github.com/amazon-science/self_debug
查看 arXiv 页面查看 PDF

评论

Xinle Sheila LiuXinle Sheila Liu
论文作者
论文提交者

我们引入 🤗 MigrationBench 数据集,这是一个为仓库级别代码迁移量身定制的基准数据集,特别针对 java 8 到 17 或其他长期支持版本。

1. 数据集

MigrationBench 包含大量 GitHub 仓库集合,分为三个子集:

  1. 🤗 AmazonScience/migration-bench-java-full 包含 5,102 个仓库
- 每个仓库都有一个测试目录或至少一个测试用例
  1. 🤗 AmazonScience/migration-bench-java-selected 包含 300 个仓库
- 是 [🤗 `migration-bench-java-full`](https://huggingface.co/datasets/AmazonScience/migration-bench-java-full) 的一个精选**子集**
  1. 🤗 AmazonScience/migration-bench-java-utg 包含 4,814 个仓库
- 是单元测试生成 (utg) 数据集,与 [🤗 `migration-bench-java-full`](https://huggingface.co/datasets/AmazonScience/migration-bench-java-full) **不重叠**
2. 评估框架

为了对 LLM 在此复杂任务上的性能进行标准化和严格评估,我们提供了一个全面的开源评估框架,可在以下链接获取:https://github.com/amazon-science/MigrationBench。

3. 基线:使用 LLMs 进行代码迁移

Teaching Large Language Models to Self-Debug 的启发,我们引入了 SD-Feedback 并证明 LLMs 可以有效解决从 java 8 到 17 的仓库级别代码迁移问题。

在使用 Claude-3.5-Sonnet-v2selected 子集上,SD-Feedback 在最小迁移和最大迁移上分别达到了 62.33%27.33% 的成功率 (pass@1)。