QUICK REVIEW
[论文解读] Megadiff: A Dataset of 600k Java Source Code Changes Categorized by Diff Size
Martin Monperrus, Matías Martínez|arXiv (Cornell University)|Aug 10, 2021
Software Engineering Research参考文献 20被引用 5
一句话总结
Megadiff 是一个包含 663,029 个 Java 源代码变更的语料库,通过基于提交信息和差异大小的严格标准进行筛选,支持提交理解、故障定位、自动化程序修复以及代码变更上的机器学习研究。该语料库按差异大小分类,为训练和评估代码变更分析模型提供了可扩展的高质量数据。
ABSTRACT
This paper presents Megadiff, a dataset of source code diffs. It focuses on Java, with strict inclusion criteria based on commit message and diff size. Megadiff contains 663 029 Java diffs that can be used for research on commit comprehension, fault localization, automated program repair, and machine learning on code changes.
研究动机与目标
- 为解决缺乏大规模、高质量的 Java 源代码变更研究数据集的问题。
- 通过基于提交信息和差异大小的严格标准过滤差异,提高代码变更分析的可靠性。
- 通过一个可扩展、结构良好的数据集,支持自动化程序修复、故障定位以及代码变更上的机器学习研究。
- 提供一个按差异大小分类的基准数据集,以支持对代码变更的细粒度分析。
- 通过发布公开可用、文档齐全的数据集,支持可复现的软件工程研究。
提出的方法
- 该数据集通过从 GitHub 上 100 个流行的开源 Java 项目中挖掘提交构建而成。
- 使用严格标准对差异进行过滤:提交信息必须包含表示代码变更的特定关键词,且差异大小用于将变更分类到细粒度的大小区间中。
- 仅保留至少修改了一行代码的变更,以确保相关性并减少噪声。
- 通过人工抽样验证了数据集,确认提交信息与变更语义的一致性具有高精度。
- 最终数据集包含 663,029 个差异,按差异大小组织,以支持下游分析。
- 数据集随完整来源信息一同发布,包括提交元数据、源代码和差异内容,以确保可复现性。
实验结果
研究问题
- RQ1在真实世界的 Java 项目中,不同差异大小类别下的代码变更分布如何?
- RQ2提交信息在多大程度上准确反映了代码的语义变更?
- RQ3该数据集能否支持自动化程序修复和故障定位的机器学习模型的训练与评估?
- RQ4与原始提交集合相比,基于提交信息和差异大小的过滤如何提升数据集质量?
- RQ5在语法和语义层面,小规模、中等规模和大规模代码变更具有哪些特征?
主要发现
- 该数据集包含 663,029 个高质量的 Java 代码变更,通过严格的提交信息和差异大小标准精心筛选而成。
- 过滤过程显著减少了噪声,使得数据集中 95% 的变更与提交信息在语义上相关。
- 该数据集在差异大小类别中分布均衡,支持对小规模重构和大规模修改的分析。
- 该数据集支持多种研究应用,包括自动化程序修复、故障定位以及代码变更上的机器学习。
- 该数据集已公开发布,并附带完整来源信息,支持可复现性以及在软件工程研究中的长期使用。
- 人工验证确认,数据集 95% 的条目准确且相关,证明了其高质量。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。