Code Review Without Borders: Evaluating Synthetic vs. Real Data for Review Recommendation

📄 arXiv: 2509.04810v1 📥 PDF

作者: Yogev Cohen, Dudi Ohayon, Romy Somkin, Yehudit Aperstein, Alexander Apartsin

分类: cs.SE, cs.CL, cs.LG

发布日期: 2025-09-05

备注: 4 pages, 1 figure


💡 一句话要点

利用LLM生成合成数据,解决新兴语言代码审查推荐系统训练数据不足问题

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

关键词: 代码审查 大型语言模型 合成数据 低资源学习 跨语言迁移

📋 核心要点

  1. 现有代码审查推荐系统在新兴语言中面临标注数据稀缺的挑战,阻碍了其应用。
  2. 利用大型语言模型将资源丰富语言的代码变更翻译为新兴语言的等效变更,生成合成训练数据。
  3. 实验表明,使用LLM生成的合成数据训练的模型,能够有效提升新兴语言的代码审查推荐性能。

📝 摘要(中文)

在现代软件开发流程中,自动判断代码变更是否需要人工审查对于维护软件质量至关重要。然而,新兴编程语言和框架的出现带来了一个关键瓶颈:虽然大量未标记的代码唾手可得,但用于训练有监督的代码审查分类模型的已标记数据却严重不足。为了解决这个问题,我们利用大型语言模型(LLM)将来自资源丰富的语言的代码变更翻译成代表性不足或新兴语言中的等效变更,从而在标记示例稀缺的情况下生成合成训练数据。我们假设,虽然LLM已经从可用的未标记代码中学习了新语言的语法和语义,但它们尚未完全掌握哪些代码变更在新兴生态系统中被认为是重要的或值得审查的。为了克服这一点,我们使用LLM生成合成变更示例,并在此基础上训练有监督的分类器。我们系统地将这些分类器的性能与在真实标记数据上训练的模型进行了比较。我们在多个GitHub存储库和语言对上的实验表明,LLM生成的合成数据可以有效地引导审查推荐系统,即使在低资源环境中也能缩小性能差距。这种方法为将自动代码审查能力扩展到快速发展的技术堆栈提供了一条可扩展的途径,即使在没有注释数据的情况下也是如此。

🔬 方法详解

问题定义:论文旨在解决新兴编程语言和框架中,由于缺乏足够的标注数据,导致无法有效训练代码审查推荐系统的问题。现有的代码审查推荐系统依赖于大量的标注数据进行训练,但在新兴语言中,人工标注成本高昂且耗时,使得这些系统难以应用。

核心思路:论文的核心思路是利用大型语言模型(LLM)的跨语言代码理解和生成能力,将已有的、资源丰富的语言中的代码变更翻译成新兴语言中的等效变更,从而生成合成的训练数据。这样可以在不需要大量人工标注的情况下,为新兴语言的代码审查推荐系统提供训练数据。

技术框架:整体框架包含以下几个主要阶段:1) 从资源丰富的语言中获取已标注的代码变更数据;2) 使用LLM将这些代码变更翻译成新兴语言的等效变更,生成合成数据;3) 使用合成数据训练代码审查分类器;4) 在真实的新兴语言代码变更数据上评估分类器的性能。

关键创新:最重要的技术创新点在于利用LLM进行跨语言的代码变更翻译,从而生成合成训练数据。与传统的依赖人工标注的方法相比,该方法可以显著降低成本和时间,并能够快速适应新的编程语言和框架。

关键设计:论文中关键的设计包括:1) 选择合适的LLM模型,确保其具有良好的跨语言代码理解和生成能力;2) 设计有效的提示工程(Prompt Engineering),指导LLM生成高质量的合成数据;3) 采用合适的分类器模型,例如支持向量机(SVM)或深度学习模型,对合成数据进行训练;4) 使用真实的新兴语言代码变更数据对分类器进行评估,确保其具有良好的泛化能力。具体的参数设置、损失函数和网络结构等细节,需要根据具体的实验和数据集进行调整。

📊 实验亮点

实验结果表明,使用LLM生成的合成数据训练的代码审查推荐系统,在多个GitHub仓库和语言对上都取得了良好的性能。即使在低资源环境下,该方法也能显著缩小与使用真实标注数据训练的模型之间的性能差距,证明了其有效性和可行性。

🎯 应用场景

该研究成果可应用于快速发展的新兴编程语言和框架的代码审查自动化,降低软件开发成本,提高软件质量。该方法还可推广到其他低资源场景,例如小语种机器翻译、罕见疾病诊断等,具有广泛的应用前景。

📄 摘要(原文)

Automating the decision of whether a code change requires manual review is vital for maintaining software quality in modern development workflows. However, the emergence of new programming languages and frameworks creates a critical bottleneck: while large volumes of unlabelled code are readily available, there is an insufficient amount of labelled data to train supervised models for review classification. We address this challenge by leveraging Large Language Models (LLMs) to translate code changes from well-resourced languages into equivalent changes in underrepresented or emerging languages, generating synthetic training data where labelled examples are scarce. We assume that although LLMs have learned the syntax and semantics of new languages from available unlabelled code, they have yet to fully grasp which code changes are considered significant or review-worthy within these emerging ecosystems. To overcome this, we use LLMs to generate synthetic change examples and train supervised classifiers on them. We systematically compare the performance of these classifiers against models trained on real labelled data. Our experiments across multiple GitHub repositories and language pairs demonstrate that LLM-generated synthetic data can effectively bootstrap review recommendation systems, narrowing the performance gap even in low-resource settings. This approach provides a scalable pathway to extend automated code review capabilities to rapidly evolving technology stacks, even in the absence of annotated data.