MdEval: Massively Multilingual Code Debugging

📄 arXiv: 2411.02310v2 📥 PDF

作者: Shukai Liu, Linzheng Chai, Jian Yang, Jiajun Shi, He Zhu, Liran Wang, Ke Jin, Wei Zhang, Hualei Zhu, Shuyue Guo, Tao Sun, Jiaheng Liu, Yunlong Duan, Yu Hao, Liqun Yang, Guanglin Niu, Ge Zhang, Zhoujun Li

分类: cs.CL

发布日期: 2024-11-04 (更新: 2025-02-24)

备注: 15 pages


💡 一句话要点

提出MdEval大规模多语言代码调试基准,促进代码LLM在多语言环境下的调试能力。

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

关键词: 代码调试 多语言 代码LLM 基准测试 自动程序修复

📋 核心要点

  1. 现有代码调试基准主要集中在Python等少数语言,缺乏语言多样性,限制了多语言代码LLM的调试能力。
  2. 论文构建了大规模多语言调试基准MdEval,并提出了调试指令语料库MDEVAL-INSTRUCT,用于训练多语言调试器。
  3. 实验表明,开源模型与闭源LLM在MdEval上存在显著性能差距,揭示了多语言代码调试的巨大提升空间。

📝 摘要(中文)

本文提出了首个大规模多语言调试基准MdEval,包含18种编程语言的3.6K测试样本,覆盖自动程序修复(APR)、代码审查(CR)和缺陷识别(BI)任务。此外,通过将缺陷注入到正确的多语言查询和解决方案(xDebugGen)中,引入了调试指令语料库MDEVAL-INSTRUCT。基于MDEVAL-INSTRUCT训练了一个多语言调试器xDebugCoder,作为一个强大的基线,专门处理各种编程语言的缺陷(例如Rust中的“Missing Mut”和C语言中的“Misused Macro Definition”)。在MDEVAL上的大量实验表明,开源模型与闭源LLM(例如GPT和Claude系列)之间存在显著的性能差距,突出了多语言代码调试场景中巨大的改进空间。

🔬 方法详解

问题定义:现有代码调试基准主要集中在Python等少数编程语言,缺乏对多种编程语言的支持。这使得评估和提升代码LLM在多语言环境下的调试能力变得困难。现有方法难以有效处理各种编程语言中特有的缺陷模式,例如Rust中的“Missing Mut”和C语言中的“Misused Macro Definition”。

核心思路:论文的核心思路是构建一个大规模、多语言的代码调试基准,覆盖多种编程语言和常见的调试任务。通过提供包含缺陷代码和对应修复方案的数据集,可以有效评估和训练代码LLM在多语言环境下的调试能力。同时,通过引入调试指令语料库,可以引导模型学习如何识别和修复不同类型的缺陷。

技术框架:整体框架包含两个主要部分:1) 构建大规模多语言调试基准MdEval,包含18种编程语言的测试样本,覆盖自动程序修复(APR)、代码审查(CR)和缺陷识别(BI)任务。2) 构建调试指令语料库MDEVAL-INSTRUCT,通过将缺陷注入到正确的多语言代码中生成。基于MDEVAL-INSTRUCT训练多语言调试器xDebugCoder。

关键创新:论文的关键创新在于构建了首个大规模多语言代码调试基准MdEval,显著扩展了现有基准的语言覆盖范围。此外,通过引入调试指令语料库MDEVAL-INSTRUCT,可以更有效地训练代码LLM识别和修复各种编程语言中的缺陷。

关键设计:MDEVAL-INSTRUCT的构建过程涉及将各种类型的缺陷注入到正确的多语言代码中,生成包含缺陷的代码片段和对应的修复指令。xDebugCoder的训练目标是根据输入的缺陷代码片段,生成正确的代码修复方案。具体的参数设置、损失函数和网络结构等技术细节在论文中未详细描述,属于未知信息。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,在MdEval基准上,开源模型与闭源LLM(如GPT和Claude系列)之间存在显著的性能差距。这表明,尽管代码LLM在代码生成方面取得了显著进展,但在多语言代码调试方面仍有很大的提升空间。xDebugCoder作为一个专门针对多语言代码调试训练的基线模型,在MdEval上取得了不错的性能,但仍有待进一步提升。

🎯 应用场景

该研究成果可应用于自动化代码修复、代码审查和缺陷识别等领域。通过利用MdEval基准和MDEVAL-INSTRUCT语料库,可以训练出更强大的多语言代码调试器,提高软件开发的效率和质量。此外,该研究还可以促进代码LLM在多语言环境下的应用,为全球开发者提供更好的代码辅助工具。

📄 摘要(原文)

Code large language models (LLMs) have made significant progress in code debugging by directly generating the correct code based on the buggy code snippet. Programming benchmarks, typically consisting of buggy code snippet and their associated test cases, are used to assess the debugging capabilities of LLMs. However, many existing benchmarks primarily focus on Python and are often limited in terms of language diversity (e.g., DebugBench and DebugEval). To advance the field of multilingual debugging with LLMs, we propose the first massively multilingual debugging benchmark, which includes 3.6K test samples of 18 programming languages and covers the automated program repair (APR) task, the code review (CR) task, and the bug identification (BI) task. Further, we introduce the debugging instruction corpora MDEVAL-INSTRUCT by injecting bugs into the correct multilingual queries and solutions (xDebugGen). Further, a multilingual debugger xDebugCoder trained on MDEVAL-INSTRUCT as a strong baseline specifically to handle the bugs of a wide range of programming languages (e.g. "Missing Mut" in language Rust and "Misused Macro Definition" in language C). Our extensive experiments on MDEVAL reveal a notable performance gap between open-source models and closed-source LLMs (e.g., GPT and Claude series), highlighting huge room for improvement in multilingual code debugging scenarios.