一句话:提出 Minecraft 数据集,从多语言项目自动挖掘带精确语句级上下文与修复类型的缺陷修复对,规模达现有数据集四倍。
从 GitHub 等版本控制系统挖掘缺陷修复时,修复位置的代码上下文(修复前后源码)精度难以保证,修复类型识别也很困难。现有数据集存在三点局限:未完整覆盖如今普遍的多语言开源项目;修复粒度仅停留在函数/方法级,缺少行/语句级信息;未考察位于源文件内但处于所有函数之外的修复。本文提出自动化挖掘方案并构建大规模数据集 Minecraft,覆盖 C、C++、Java、Python 等语言的 416 个 GitHub 项目,包含 220 万次提交与 329 万对缺陷修复,总体积 28.8GB,在数据可用性上比现有数据集扩大约四倍。该数据集可为缺陷检测、自动修复及软件质量改进等下游任务提供高质量资源。
Repository mining of bug fixes from version control systems like GitHub is a challenging problem as far as the precision of the bug context is concerned, i.e., source codes immediately preceding and succeeding the fix location. Coupled with this, identification of the type of the bug fix goes a long way towards creating high quality datasets that can be used for several downstream tasks. However, existing bug fix datasets suffer from the following limitations that dilute the data quality. Firstly, they do not focus on multilingual projects in their entirety given that most open-source projects are now multilingual. Secondly, the granularity of the bug fixes are considered only at the function/method level without specifying line/statement level information. Thirdly, bug fixes lying within the scope of a source file but outside any of its constituent functions have not been examined. In this paper, we propose a solution to overcome the aforementioned limitations by introducing a novel and extensive dataset named Minecraft. With a size of 28.8GB (considering 416 GitHub projects encompassing programming languages such as C, C++, Java, and Python, 2.2M commits, 3.29M bug-fix pairs), Minecraft surpasses the existing datasets by 4-fold enlargement in terms of data availability. We believe Minecraft would serve as a valuable resource for various stakeholders in the software development and research communities, empowering them to improve software quality, develop innovative bug detection and auto-fix techniques, and advance the field of software engineering.