Skeleton-Guided-Translation: A Benchmarking Framework for Code Repository Translation with Fine-Grained Quality Evaluation

📄 arXiv: 2501.16050v1 📥 PDF

作者: Xing Zhang, Jiaheng Wen, Fangkai Yang, Pu Zhao, Yu Kang, Junhao Wang, Maoquan Wang, Yufan Huang, Elsie Nallipogu, Qingwei Lin, Yingnong Dang, Saravan Rajmohan, Dongmei Zhang, Qi Zhang

分类: cs.SE, cs.AI

发布日期: 2025-01-27


💡 一句话要点

提出Skeleton-Guided-Translation框架,用于代码仓库级Java到C#的翻译,并提供细粒度质量评估。

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

关键词: 代码翻译 仓库级翻译 Java到C# 骨架引导翻译 细粒度评估 TRANSREPO-BENCH 大型语言模型

📋 核心要点

  1. 现有代码翻译基准主要关注单个函数,忽略了仓库级翻译的复杂性,如模块间连贯性和依赖管理。
  2. Skeleton-Guided-Translation框架首先翻译代码仓库的结构“骨架”,然后以此为指导翻译完整仓库。
  3. TRANSREPO-BENCH基准包含高质量Java仓库及其C#骨架,以及匹配的单元测试和构建配置,并提供细粒度评估指标。

📝 摘要(中文)

大型语言模型的进步加剧了企业应用现代化和将遗留系统迁移到安全、通用语言的需求。然而,现有的代码翻译基准主要关注单个函数,忽略了翻译整个仓库所涉及的复杂性,例如维护模块间的连贯性和管理依赖关系。虽然最近的一些仓库级翻译基准试图解决这些挑战,但它们仍然面临局限性,包括可维护性差和过于粗糙的评估粒度,这使得它们对开发者不太友好。我们引入了Skeleton-Guided-Translation,这是一个用于仓库级Java到C#代码翻译的框架,具有细粒度的质量评估。它使用两步过程:首先翻译仓库的结构“骨架”,然后翻译由这些骨架引导的完整仓库。在此基础上,我们提出了TRANSREPO-BENCH,这是一个高质量开源Java仓库及其对应的C#骨架的基准,包括匹配的单元测试和构建配置。我们的单元测试是固定的,可以应用于多个或增量翻译,无需手动调整,从而提高了评估的自动化和可扩展性。此外,我们开发了细粒度的评估指标,可以在单个测试用例级别评估翻译质量,解决了传统二元指标无法区分构建失败导致所有测试失败的情况。使用TRANSREPO-BENCH的评估突出了关键挑战,并推进了更准确的仓库级代码翻译。

🔬 方法详解

问题定义:论文旨在解决代码仓库级别,从Java到C#的自动翻译问题。现有方法主要集中在函数级别的翻译,忽略了仓库级别的复杂性,例如模块间的依赖关系和整体架构的保持。此外,现有的仓库级别翻译基准存在可维护性差、评估粒度粗糙等问题,难以准确评估翻译质量。

核心思路:论文的核心思路是“骨架引导翻译”。首先提取并翻译Java代码仓库的结构性“骨架”,例如类名、方法签名等,然后利用这些骨架作为指导,翻译完整的代码仓库。这种方法旨在更好地保持代码的整体结构和模块间的关系,从而提高翻译质量。

技术框架:Skeleton-Guided-Translation框架包含两个主要阶段:骨架翻译阶段和完整代码翻译阶段。在骨架翻译阶段,系统提取Java代码仓库的结构信息,并将其翻译成C#对应的结构。在完整代码翻译阶段,系统利用骨架翻译的结果作为约束和指导,翻译Java代码仓库的剩余部分,生成完整的C#代码仓库。TRANSREPO-BENCH基准用于评估翻译质量,包含Java仓库、C#骨架、单元测试和构建配置。

关键创新:论文的关键创新在于提出了“骨架引导翻译”的思想,并将其应用于代码仓库级别的翻译。这种方法能够更好地保持代码的整体结构和模块间的关系,从而提高翻译质量。此外,论文还提出了细粒度的评估指标,可以在单个测试用例级别评估翻译质量,解决了传统二元指标的局限性。

关键设计:TRANSREPO-BENCH基准包含高质量的开源Java仓库,并提供了对应的C#骨架,这些骨架是通过人工或自动方式生成的。单元测试是固定的,可以应用于多个或增量翻译,无需手动调整。细粒度的评估指标考虑了单个测试用例的通过/失败情况,以及构建过程中的错误信息,从而更准确地评估翻译质量。具体的翻译模型和技术细节(例如使用的神经网络结构、损失函数等)在论文中未明确说明,属于未知信息。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

论文提出了TRANSREPO-BENCH基准,包含高质量的Java仓库及其C#骨架,并设计了细粒度的评估指标。实验结果表明,该基准能够有效评估仓库级代码翻译的质量,并突出了现有翻译方法面临的挑战。具体的性能数据和提升幅度在摘要中未明确提及,属于未知信息。

🎯 应用场景

该研究成果可应用于企业应用现代化和遗留系统迁移,帮助企业将Java代码库迁移到C#等更安全、通用的语言。通过自动化代码翻译过程,可以降低迁移成本,提高迁移效率,并减少人工错误。该技术还有助于跨平台软件开发,促进不同编程语言之间的互操作性。

📄 摘要(原文)

The advancement of large language models has intensified the need to modernize enterprise applications and migrate legacy systems to secure, versatile languages. However, existing code translation benchmarks primarily focus on individual functions, overlooking the complexities involved in translating entire repositories, such as maintaining inter-module coherence and managing dependencies. While some recent repository-level translation benchmarks attempt to address these challenges, they still face limitations, including poor maintainability and overly coarse evaluation granularity, which make them less developer-friendly. We introduce Skeleton-Guided-Translation, a framework for repository-level Java to C# code translation with fine-grained quality evaluation. It uses a two-step process: first translating the repository's structural "skeletons", then translating the full repository guided by these skeletons. Building on this, we present TRANSREPO-BENCH, a benchmark of high quality open-source Java repositories and their corresponding C# skeletons, including matching unit tests and build configurations. Our unit tests are fixed and can be applied across multiple or incremental translations without manual adjustments, enhancing automation and scalability in evaluations. Additionally, we develop fine-grained evaluation metrics that assess translation quality at the individual test case level, addressing traditional binary metrics' inability to distinguish when build failures cause all tests to fail. Evaluations using TRANSREPO-BENCH highlight key challenges and advance more accurate repository level code translation.