five

ManySStuBs4J

收藏
arXiv2020-04-11 更新2024-06-21 收录
下载链接:
https://doi.org/10.5281/zenodo.3653444
下载链接
链接失效反馈
官方服务:
资源简介:
ManySStuBs4J数据集由英国爱丁堡大学创建,包含153,652条单行语句错误修复变更,源自1,000个流行的开源Java项目。数据集通过16种错误模板进行标注,旨在解决程序修复技术对简单错误召回率的估计问题。数据集内容涵盖了编译前后均能通过的简单错误,这些错误通常由开发者无意中引入,如复制粘贴代码时的标识符替换错误。数据集创建过程中,通过自动化的工具和方法筛选和分类错误。该数据集主要应用于程序修复和实证软件工程研究,特别是评估和改进自动化修复工具的性能。

The ManySStuBs4J dataset was created by the University of Edinburgh, UK. It contains 153,652 single-line statement bug-fix changes derived from 1,000 popular open-source Java projects. Annotated with 16 bug templates, the dataset is designed to address the problem of estimating the recall rate of simple bugs by program repair technologies. The dataset covers simple bugs that can pass compilation both before and after correction, which are usually unintentionally introduced by developers, such as identifier replacement errors during code copy-pasting. During the dataset construction process, automated tools and methods were employed to screen and categorize the bugs. This dataset is primarily used for program repair and empirical software engineering research, especially for evaluating and enhancing the performance of automated program repair tools.
提供机构:
英国爱丁堡大学
创建时间:
2019-05-31
搜集汇总
数据集介绍
main_image_url
构建方式
在软件工程领域,自动化程序修复技术面临缺乏大规模真实世界缺陷数据的挑战。ManySStuBs4J数据集的构建采用系统化挖掘方法,从GitHub上选取1000个高流行度开源Java Maven项目,通过GHTorrent数据确定项目排名。利用提交信息关键词启发式方法识别缺陷修复提交,准确率达94%。随后筛选仅涉及单语句修改的提交,排除多语句变更和重构操作。通过抽象语法树分析技术,对每个修复前后的代码片段进行解析,并自动匹配16种预定义的SStuB模板,最终形成包含153,652个单语句缺陷实例的标注数据集。
使用方法
该数据集主要服务于程序修复和软件工程实证研究领域。研究人员可利用其评估基于模板的修复技术的实际召回率,分析简单缺陷在真实项目中的分布规律。数据集以JSON格式提供,每个实例包含项目名称、文件路径、提交哈希、缺陷行号及匹配的模板类型等元数据。对于需要测试验证的研究,小型版本特别标注了可构建项目及其测试套件信息。此外,数据集可用于训练机器学习模型进行缺陷定位,或探究简单缺陷的引入模式和修复模式,为开发更精准的自动化修复工具提供数据支撑。
背景与挑战
背景概述
在软件工程领域,程序修复作为软件维护的核心任务,长期面临着高精度与高召回率难以兼得的挑战。为应对这一难题,爱丁堡大学与谷歌研究院的研究团队于2020年联合推出了ManySStuBs4J数据集,旨在通过挖掘开源Java项目中的单语句错误修复记录,系统性地评估简单错误模板的实际覆盖范围。该数据集从1000个流行项目中提取了153,652个单语句错误修复变更,并依据16种常见错误模板进行标注,揭示了约33%的单语句错误可通过有限模板集修复,为程序修复技术的召回率估算提供了实证基础,显著推动了自动化软件维护工具的发展。
当前挑战
ManySStuBs4J数据集致力于解决单语句错误修复的领域挑战,其核心在于量化简单错误模板在真实代码中的出现频率,以弥补现有修复技术召回率评估的数据空白。在构建过程中,研究团队面临多重挑战:首先,需从海量提交历史中精准识别错误修复提交,依赖关键词启发式方法可能引入误报;其次,区分单语句修改与复杂变更需设计精细的语法树比对算法,避免因代码格式或重构操作干扰数据纯度;此外,确保错误模板的通用性与代表性,需平衡模板数量与错误覆盖率,同时排除重构变更如变量重命名等非错误修改,以维持数据集的准确性与实用性。
常用场景
经典使用场景
在软件工程领域,自动程序修复技术致力于高效定位并修正代码缺陷,然而传统方法常受限于小规模或合成数据,难以评估修复模板的实际覆盖率。ManySStuBs4J数据集通过从1000个流行开源Java项目中挖掘153,652个单语句错误修复变更,并标注其是否匹配16种预定义错误模板,为研究者提供了大规模真实世界简单错误的基准。该数据集最经典的使用场景在于评估基于模板的程序修复工具,例如通过分析约33%的单语句错误可被模板覆盖,验证了聚焦简单错误修复策略的可行性,进而推动高精度、高召回率修复技术的发展。
解决学术问题
该数据集解决了程序修复研究中长期存在的关键问题:缺乏大规模真实错误数据以准确估计修复模板的召回率。传统方法依赖小规模项目或合成缺陷,难以反映实际开发中简单错误的分布与频率。ManySStuBs4J通过系统化挖掘和分类单语句错误,首次量化了模板匹配错误在代码中的出现密度(约每1600-2500行代码出现一次),为修复技术的有效性评估提供了实证基础。其意义在于填补了真实错误数据的空白,促进了修复方法从理论验证向实际应用过渡,并推动了基于机器学习的错误定位与修复研究。
实际应用
在实际软件开发中,简单错误如标识符误用、数值字面量混淆或布尔值颠倒,虽易于修复却难以检测,常导致调试效率低下。ManySStuBs4J数据集通过提供大量标注错误实例,支持开发针对性的静态分析工具或集成开发环境插件,帮助开发者早期发现并自动修正此类错误。例如,基于该数据集训练的模型可嵌入持续集成流程,实时扫描代码变更,减少人工审查负担。此外,数据集涵盖的Maven项目构建信息与测试套件,使得其能用于评估测试驱动修复工具,提升软件维护的自动化水平。
数据集最近研究
最新研究方向
在软件工程领域,自动程序修复技术正逐步从通用性方法转向针对特定缺陷模式的精细化研究。ManySStuBs4J数据集通过挖掘大规模Java项目中的单语句错误修复,揭示了约33%的简单错误可通过16种预定义模板进行修复,为基于模板的修复方法提供了实证基础。当前前沿研究聚焦于利用该数据集训练机器学习模型,如DeepBugs所采用的名称错误检测方法,以提升对单语句错误的定位与修复精度。同时,该数据集推动了轻量级静态分析工具的开发,旨在以高精度识别常见编码失误,弥补传统工具如SpotBugs在检测此类错误时召回率不足的缺陷。这些进展不仅优化了开发流程中的早期错误干预能力,也为实证软件工程提供了关于错误引入模式与频率的宝贵洞察。
相关研究论文
  • 1
    How Often Do Single-Statement Bugs Occur? The ManySStuBs4J Dataset英国爱丁堡大学 · 2020年
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

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

二维码
科研交流群

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

数据驱动未来

携手共赢发展

商业合作