RustRepoTrans
收藏arXiv2024-11-21 更新2024-11-26 收录
下载链接:
http://arxiv.org/abs/2411.13990v1
下载链接
链接失效反馈官方服务:
资源简介:
RustRepoTrans是由中山大学珠海校区创建的第一个面向Rust的代码翻译基准数据集,包含375个任务,涵盖了实际软件开发中的复杂依赖关系。数据集通过从GitHub上选取重写为Rust的项目,提取功能等价的代码对及其依赖关系和测试用例构建而成。创建过程中采用了静态代码分析工具和LLM进行功能等价性验证,并手动校验依赖关系,确保数据集的高质量。该数据集主要用于评估大型语言模型在复杂代码翻译任务中的性能,旨在解决现有基准数据集在处理真实世界软件开发复杂性方面的不足。
RustRepoTrans is the first Rust-focused code translation benchmark dataset created by Sun Yat-sen University Zhuhai Campus. It contains 375 tasks covering complex dependencies in real-world software development. The dataset is constructed by selecting projects rewritten into Rust from GitHub, extracting functionally equivalent code pairs along with their dependencies and test cases. During its development, static code analysis tools and large language models (LLMs) were used to verify functional equivalence, and dependencies were manually inspected to ensure the high quality of the dataset. This dataset is mainly used to evaluate the performance of large language models in complex code translation tasks, aiming to address the shortcomings of existing benchmark datasets in handling the complexity of real-world software development.
提供机构:
中山大学珠海校区
创建时间:
2024-11-21
搜集汇总
数据集介绍

构建方式
RustRepoTrans 数据集的构建过程分为两个主要部分:功能等效代码对提取和依赖关系提取。首先,通过从 GitHub 项目中提取功能等效的代码对(源函数和目标函数),目标函数使用 Rust 编写,并包含相关的测试用例。这一过程涉及五个步骤,包括迁移项目选择、函数池提取、基于相似性的候选函数对提取、基于 LLM 的等效函数对识别和手动验证。其次,通过静态分析整个项目,提取目标函数的依赖关系,包括函数依赖、数据类型依赖和变量依赖。自动提取的依赖关系经过手动审查以确保准确性。最终,这一过程构建了包含 375 个任务的 RustRepoTrans 数据集,每个任务都包含手动验证的翻译和相应的单元测试。
特点
RustRepoTrans 数据集的主要特点在于其真实性和复杂性。首先,该数据集是首个考虑仓库级别依赖关系的代码翻译基准,与人工构造或从编程问答网站获取的数据集不同,它反映了真实软件开发中的复杂依赖关系。其次,RustRepoTrans 专注于 Rust 编程语言,这是一个具有严格语法要求和较少资源的新兴语言,因此对 LLM 的翻译能力提出了更高的挑战。此外,数据集中的每个任务都包含手动验证的翻译和相应的单元测试,确保了数据的高质量和实用性。
使用方法
RustRepoTrans 数据集主要用于评估和提升大型语言模型(LLM)在复杂代码翻译任务中的性能。研究人员可以使用该数据集来测试和比较不同 LLM 在处理仓库级别代码翻译任务时的表现,特别是针对 Rust 语言的翻译能力。通过分析模型在数据集上的错误输出,可以深入理解其在复杂翻译场景中的局限性,并指导未来模型设计和评估方法的改进。此外,数据集还可用于开发和验证新的代码翻译技术,特别是在处理多语言和多依赖环境下的代码迁移问题。
背景与挑战
背景概述
在编程语言不断演进的背景下,代码迁移(即代码翻译)成为适应不同运行环境、优化性能或增强安全性的关键过程。近年来,大型语言模型(LLMs)在代码生成和翻译任务中展示了显著的能力,尤其是在Java和Python等广泛使用的语言之间。然而,这些模型在翻译到Rust等新兴且资源较少的语言时,其有效性仍未得到充分探索。Rust因其有限的训练数据和与传统编程语言显著不同的语言特性,给代码翻译带来了独特的挑战。为了填补这一空白,中山大学和复旦大学的研究人员于2024年推出了RustRepoTrans数据集,这是首个面向Rust的仓库级代码翻译基准,包含375个任务,涵盖相关依赖关系,旨在更真实地反映实际软件开发中的复杂性。
当前挑战
RustRepoTrans数据集面临的挑战主要集中在两个方面:一是解决领域问题的复杂性,即在实际软件开发中,代码翻译不仅涉及简单的函数级翻译,还需考虑复杂的依赖关系和项目架构;二是构建过程中的技术难题,包括从真实开源项目中提取功能等效的代码对及其依赖关系,以及确保这些代码对的实际功能等效性。此外,现有的大型语言模型在处理仓库级代码翻译时,性能显著下降,表明现有评估方法在反映模型实际能力方面存在局限性。
常用场景
经典使用场景
RustRepoTrans 数据集的经典使用场景在于评估大型语言模型(LLMs)在将代码从其他编程语言迁移到 Rust 时的表现。该数据集包含 375 个任务,涵盖了实际软件开发中的复杂依赖关系,使得模型在处理函数级别的翻译时能够更真实地反映其在实际开发环境中的表现。通过使用 RustRepoTrans,研究人员可以深入分析 LLMs 在处理复杂代码翻译任务时的性能,特别是在处理跨文件依赖和项目架构维护方面的能力。
解决学术问题
RustRepoTrans 数据集解决了现有代码翻译基准在评估 LLMs 时过于简化和缺乏实际复杂性的问题。传统的代码翻译数据集通常仅包含简单的函数级别翻译,而忽略了实际开发中的复杂依赖和项目架构。RustRepoTrans 通过引入包含复杂依赖的仓库级别代码翻译任务,填补了这一空白,为学术界提供了一个更为真实和全面的评估框架。这不仅有助于揭示现有 LLMs 在处理复杂代码翻译任务时的局限性,还为未来模型设计和评估方法的改进提供了重要参考。
衍生相关工作
基于 RustRepoTrans 数据集,已经衍生出多项相关研究工作。例如,研究人员利用该数据集对不同 LLMs 的代码翻译能力进行了深入比较,揭示了各模型在处理复杂依赖和语言特性差异时的表现。此外,还有工作探讨了如何通过改进模型架构和训练方法来提升代码翻译的准确性和鲁棒性。这些研究不仅推动了代码翻译领域的发展,也为实际应用中的代码迁移提供了新的思路和方法。
以上内容由遇见数据集搜集并总结生成



