five

Defects4C

收藏
arXiv2025-10-13 更新2025-10-15 收录
下载链接:
https://sites.google.com/view/defects4c
下载链接
链接失效反馈
官方服务:
资源简介:
Defects4C是一个为C/C++程序修复而设计的全面且可执行的基准数据集。该数据集从真实的C/C++仓库构建,包含大量的与错误相关的提交(总计9M),248个高质量的错误函数和102个易受攻击的函数,所有这些都配有测试用例以便重现。这些资源使得对修复技术的严格评估成为可能,并支持对基于学习的方法的再训练以提升性能。

Defects4C is a comprehensive and executable benchmark dataset designed for C/C++ program repair. Constructed from real-world C/C++ repositories, it contains a large number of bug-related commits (totaling 9M), 248 high-quality buggy functions and 102 vulnerable functions, all of which are equipped with test cases for reproduction. These resources enable rigorous evaluation of repair techniques and support retraining of learning-based methods to enhance their performance.
提供机构:
新加坡管理大学,新加坡;天津大学,中国;南京大学,中国;南洋理工大学,新加坡
创建时间:
2025-10-13
原始信息汇总

Defects4C 数据集概述

数据集简介

Defects4C 是一个用于评估基于大语言模型的程序修复能力的 C/C++ 错误基准数据集,旨在填补 C/C++ 漏洞自动修复领域高质量数据集的空白。

数据集规模

  • 正常错误:248 个 (Defects4C_bug)
  • CVE 错误:102 个 (Defects4C_vul)
  • 总计:350 个真实世界的 C/C++ 错误

数据来源

从广泛使用的 GitHub C/C++ 仓库中提取错误提交,使用预定义的错误相关关键词进行识别。

数据特征

  • 包含对应的单元测试用于验证漏洞存在性
  • 由安全专家将错误分类为四个不同的组别
  • 支持未来研究使用该数据集

评估应用

用于评估多种大语言模型在修复 C/C++ 程序方面的能力,包括:

  • GPT-3.5 Turbo
  • GPT-4
  • CodeLLAMA
  • WizardCoder

数据获取

  • GitHub 仓库:https://github.com/defects4c/defects4c
  • 中间数据:上传至 drive.google.com 用于复现研究

技术需求

  • Python >= 3.9
  • Git >= 1.9
  • Docker
搜集汇总
数据集介绍
main_image_url
构建方式
在C/C++程序修复研究领域,构建高质量基准数据集面临严峻挑战。Defects4C通过系统化流程从真实开源项目中提取缺陷数据:首先利用BigQuery从11万个GitHub仓库中筛选出3800万个潜在缺陷提交,经过可用性验证后保留900万有效提交;随后采用单函数提交过滤机制,结合单元测试匹配算法识别与缺陷修复直接相关的测试用例;最终通过三轮人工标注流程,由安全专家确认缺陷真实性,形成包含248个通用缺陷和102个安全漏洞的高质量数据集。
特点
该数据集展现出多维度的显著特征:其核心价值体现在从真实C/C++项目中提取的350个经人工验证的缺陷样本,每个样本均配备可执行的测试用例确保可复现性;数据集采用分层架构设计,既包含大规模缺陷提交(900万)支持模型训练,又提供精标注样本满足严格评估需求;缺陷类型覆盖签名错误、内存错误、逻辑组织缺陷等八大类别,并按照修复粒度划分为行级、块级和函数级三个层次,全面反映了C/C++程序缺陷的复杂性。
使用方法
为提升研究效率,数据集配备了完整的工具链支持:通过命令行接口提供补丁提取与验证功能,支持在Docker容器中执行隔离测试;研究者可调用/extract_anchor_patch端点从大语言模型输出中提取补丁,或使用/fix_with_patch进行自动化验证;数据集特别设计了与大型语言模型的兼容接口,支持单轮修复和对话式修复两种评估模式,并提供了错误分类和堆栈跟踪解析工具,为C/C++程序修复研究提供了标准化的实验平台。
背景与挑战
背景概述
随着软件系统复杂性的增加,自动化程序修复技术成为提升软件质量与可靠性的关键研究方向。尽管Java等语言的修复研究已因Defects4J等基准数据集取得显著进展,但C/C++作为系统级软件的核心语言,其漏洞数量占开源漏洞的50%以上,却长期缺乏高质量的修复基准。为此,新加坡管理大学等机构于2025年联合发布Defects4C数据集,从11万个GitHub仓库中提取900万次提交,最终筛选出248个通用错误和102个漏洞函数,填补了C/C++领域可执行修复基准的空白,为大规模语言模型的评估与优化提供了重要基础设施。
当前挑战
Defects4C面临的挑战主要体现在领域问题与构建过程两方面。在领域层面,C/C++程序修复需应对底层内存操作、未定义行为和复杂控制流等独特难题,现有大型语言模型在此类任务中的修复成功率不足11%,远低于Java基准表现。构建过程中,数据集需克服真实项目代码的异构性,通过三阶段人工标注消除提交消息中的误报,并设计单元测试匹配算法验证修复有效性,确保350个高质样本兼具多样性与可复现性。
常用场景
经典使用场景
在软件工程领域,Defects4C数据集主要应用于评估大语言模型在C/C++程序自动修复任务中的性能表现。该数据集通过提供248个经过人工验证的真实缺陷函数和102个漏洞函数,为研究者构建了标准化的测试环境。研究人员能够在此基准上系统性地比较不同模型在单轮修复和对话式修复策略下的表现,从而深入理解现有技术在C/C++语言特性下的适应能力。
实际应用
在工业实践层面,Defects4C为开发安全关键的C/C++软件系统提供了重要的质量保障工具。操作系统、嵌入式设备和网络服务等基础设施的开发团队可利用该数据集验证自动修复工具在真实代码场景下的有效性。特别是针对占开源漏洞50%以上的C/C++安全缺陷,该基准能帮助工程师评估修复方案对内存溢出、空指针解引用等典型漏洞的处置能力,提升软件产品的可靠性与安全性。
衍生相关工作
基于Defects4C数据集,学术界已衍生出多项重要的后续研究。研究者通过该基准发现了大语言模型在修复多行缺陷和需要外部上下文信息的漏洞时存在显著性能瓶颈,这推动了针对C/C++特定修复方法的创新。同时,数据集支持的大规模微调实验为探索参数高效微调技术在程序修复领域的应用提供了新范式,催生了面向低级语言特性的专用修复模型架构的研究浪潮。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作