BugHunter Dataset
收藏数据链接:
官方服务:
资源简介:
一个新颖的自动构建且自由可用的bug数据集,包含代码元素(文件、类、方法)及其广泛的代码度量和bug信息。与传统方法不同,该数据集捕捉了同一源代码元素在bug存在和修复状态下的信息,不受特定版本限制。
A novel, automatically constructed and freely available bug dataset containing code elements (files, classes, methods) as well as comprehensive code metrics and bug-related information. Unlike traditional approaches, this dataset captures information for the same source code element in both bug-present and bug-fixed states, without being restricted by specific software versions.
创建时间:
2020-06-18
搜集汇总
数据集介绍

构建方式
在软件开发的复杂生态中,代码缺陷的精准定位与预测始终是提升软件质量的核心挑战。BugHunter Dataset 的构建突破了传统数据集仅从预设发布版本中采集所有代码元素特征的局限,转而采用一种全新的自动化方法。研究团队从 GitHub 上精选了15个覆盖不同领域、规模与活跃度的Java项目,通过解析提交日志中的错误报告标识符,将修复提交与特定缺陷精准关联。随后,利用差异文件分析确定受缺陷影响的代码元素(文件、类、方法),并提取这些元素在缺陷修复前(即错误状态)与修复后(即修复状态)两个紧邻时间点的快照。最终,借助 OpenStaticAnalyzer 工具计算包括静态代码度量、克隆度量及编码规则违规在内的丰富特征,构建出仅包含缺陷相关元素前后状态对比的数据集,而非传统方法中混杂大量无关元素。
特点
该数据集最显著的特点在于其独特的“前后状态”捕捉机制,彻底消除了传统方法中因将缺陷标记到可能尚未引入错误的发布版本而带来的标签不确定性。它不依赖任何关于代码元素何时变为有缺陷的假设,仅基于实际修复操作的时间线,确保了标签的精确性。此外,数据集在粒度上实现了从文件、类到方法的全面覆盖,并提供了远超同类数据集的丰富度量维度,包括66种静态代码度量、8种克隆度量以及35种编码规则违反度量,为多维度分析缺陷特征提供了坚实基础。其自动化的构建流程也使得数据集易于扩展,能够持续纳入更多项目与缺陷记录。
使用方法
BugHunter Dataset 的核心使用场景在于构建和评估缺陷预测模型。由于数据集记录了同一代码元素在修复前后的度量变化,研究者和工程师可以将其作为监督学习的训练语料,利用机器学习算法(如随机森林、逻辑回归等)学习从度量空间到缺陷状态的映射关系。数据集中提供了经过不同过滤策略(如移除、相减等)处理的版本,以解决可能存在的特征冗余问题。使用时,用户可根据预测目标(文件、类或方法级别)选择对应CSV文件,并通过十折交叉验证等方法评估模型性能。特别地,论文建议利用方法级别的度量投影到类级别进行预测,实验证明该方法能获得显著优于直接使用类级别度量的效果。
背景与挑战
背景概述
BugHunter Dataset 由匈牙利塞格德大学软件工程系的 Rudolf Ferenc 等人于2020年创建,旨在构建一种新型的自动化缺陷数据集,以支持基于机器学习的缺陷预测研究。该数据集突破了传统方法仅收集单一或多个发布版本中所有代码元素特征的局限,创新性地捕捉了同一代码元素在缺陷存在期间最窄时间窗口内的缺陷状态与修复状态,从而更精确地反映代码度量在缺陷修复前后的变化。数据集涵盖15个来自GitHub的Java项目,包含文件、类和方法三个粒度的代码元素,并提供了丰富的静态代码度量、代码克隆度量及编码规则违反度量。其发布为缺陷预测领域提供了更具表达力和可靠性的基准,显著推动了软件质量保障技术的发展。
当前挑战
BugHunter Dataset 面临的核心挑战包括:首先,在领域问题层面,传统缺陷数据集因依赖发布版本快照而存在标签不确定性,即代码元素可能在版本发布后才引入缺陷,导致训练数据中的错误标记,而BugHunter虽通过精确捕获缺陷前后状态提升了标签准确性,却面临度量差异较小、预测模型构建难度增大的问题。其次,在构建过程中,挑战在于自动化地从GitHub海量仓库中筛选出具有足够缺陷报告与提交关联的项目,并处理分支合并、外部追踪系统等复杂场景;同时,深度静态分析工具的计算开销巨大,例如对Elasticsearch项目分析近5000个版本需耗时约1600小时,且需手动验证如JUnit等项目的匹配算法可靠性,以确保数据集的质量与通用性。
常用场景
经典使用场景
在软件缺陷预测领域,BugHunter Dataset 作为一款新颖的自动构建数据集,其核心应用场景在于利用机器学习模型对源代码元素(文件、类、方法)的缺陷倾向进行精准预测。该数据集独树一帜地捕获了同一代码元素在缺陷修复前后的双状态快照,并辅以丰富的静态代码度量、克隆度量及编码违规度量,为研究者提供了前所未有的细粒度训练语料。通过对比缺陷修复前后的度量差异,模型能够学习到缺陷代码特有的结构性变化模式,从而显著提升预测的准确性与鲁棒性。
实际应用
在实际软件工程中,该数据集可被集成至持续集成流水线,用于实时识别高风险代码变更。开发团队可基于历史缺陷模式,在代码审查阶段自动标记出潜在缺陷模块,从而将测试资源优先集中于最易出错的环节。此外,其方法级度量投影至类级的预测策略已被证实能显著提升类级缺陷定位的精度,为大型企业级项目(如 Elasticsearch、Hazelcast)的质量保障体系提供了数据驱动的决策支持,有效降低了维护成本与线上故障率。
衍生相关工作
基于该数据集,研究者已衍生出多项具有影响力的工作。例如,通过将其与传统的 GitHub Bug Dataset 进行对比实验,验证了基于双状态快照的数据构建方法在消除标签噪声方面的优越性。后续工作进一步探索了方法级度量投影至类级的预测范式,发现其F-measure值可达0.74以上,显著优于仅使用类级度量的模型。此外,该数据集还被用于评估不同过滤策略(如Subtract与Removal)对模型泛化能力的影响,并为跨项目缺陷预测研究提供了标准化的测试床。
以上内容由遇见数据集搜集并总结生成



