遇见数据集

Partial-Fix Benchmark Set

收藏
arXiv2021-07-17 更新2024-06-21 收录
官方服务:

资源简介:

Partial-Fix Benchmark Set是由慕尼黑大学和柏林洪堡大学创建的一个用于自动化程序修复的基准数据集,包含2204个基于部分修复的基准任务。该数据集通过爬取GitHub上1500个最受欢迎的开源C项目中的部分修复案例构建而成。数据集内容丰富,涵盖了多种程序修复场景,旨在帮助研究人员评估和改进基于部分修复的自动化程序修复技术。创建过程中,研究团队采用了严格的筛选标准和数据收集方法,确保数据集的质量和实用性。该数据集主要应用于自动化程序修复领域,特别是针对部分修复的研究,以解决软件开发中的实际问题。

The Partial-Fix Benchmark Set is a benchmark dataset for automated program repair, developed by the University of Munich and Humboldt-Universität zu Berlin. It contains 2,204 partial-fix-based benchmark tasks. This dataset is constructed by crawling partial-fix cases from the 1500 most popular open-source C projects hosted on GitHub. With rich content covering diverse program repair scenarios, it aims to help researchers evaluate and optimize partial-fix-based automated program repair technologies. During its development, the research team adopted strict screening criteria and data collection methodologies to ensure the dataset's quality and practical utility. This dataset is primarily utilized in the field of automated program repair, particularly for partial-fix-related research, to address real-world challenges in software development.

创建时间:
2021-07-17
搜集汇总
数据集介绍
构建方式
在软件缺陷修复的研究领域中,部分修复指开发者首次尝试修复已知问题但未能成功的失败尝试,尽管其不完善,却蕴含着可疑代码区域与缺陷类型等关键信息。为系统性地研究此类现象,该数据集从GitHub上1 500个最受关注的C语言开源仓库中,通过爬取所有已关闭且至少关联两次提交的问题,并采用“重新打开-关闭”与“失败-成功”两种模式识别部分修复。最终筛选出2 204个基准任务,每个任务包含修复前的原始代码存档、部分修复的差异文件以及最终成功修复的差异文件,并以YAML格式定义任务元数据。
特点
该数据集的核心特色在于其专注于部分修复这一独特且尚未被充分探索的自动化程序修复场景,填补了该领域基准测试的空白。数据集规模庞大,涵盖2 204个来自真实世界开源项目的任务,确保了样本的多样性与代表性。其结构设计遵循最佳实践,采用唯一任务名称、YAML任务定义格式以及开放源代码许可,便于社区贡献与维护。此外,任务中包含了多个部分修复的差异文件,为研究多轮修复尝试与最终修复之间的关系提供了丰富素材。
使用方法
在使用该数据集时,研究人员需将基准版本(即包含原始缺陷的程序存档)与部分修复的差异文件输入到自动化程序修复工具中,作为修复的起点与约束。工具生成的候选修复方案可与预期的最终修复差异文件进行对比,以评估其正确性与完整性。数据集还提供了丰富的元数据,如提交哈希、时间戳、标签等信息,便于进行细粒度的分析与分类。未来可进一步结合测试套件或程序规约作为判据,以增强基准任务的实用性。
背景与挑战
背景概述
软件缺陷是软件开发成本与系统故障风险的主要来源,自动程序修复技术虽已取得显著进展,但处理不完整修复(即部分补丁)的问题仍悬而未决。由慕尼黑大学与柏林洪堡大学的研究团队于2021年提出的Partial-Fix Benchmark Set,旨在填补该领域的评估空白。该数据集基于对GitHub上1500个最受欢迎C语言仓库的系统性爬取,通过“重新打开-关闭”与“失败-修复”两种模式识别出2380个潜在部分修复案例,最终构建了包含2204个基准任务的标准化测试集。这一开创性工作为利用程序员失败修复尝试中蕴含的代码位置与语义信息来优化自动修复算法奠定了研究基础,并推动了该新兴方向的可重复性评估与社区协作。
当前挑战
该数据集面临的核心挑战首先在于领域问题的复杂性:部分修复场景中,失败补丁虽能指示可疑代码区域与缺陷类型,但如何从这些不完整信息中准确推断预期行为并生成正确补丁,仍是自动程序修复的技术瓶颈。其次,构建过程中存在多重困难:依赖GitHub仓库的星标筛选可能引入代表性偏差;通过提交信息与问题编号的关联识别部分修复,会遗漏未显式链接的工作流(如手动关闭问题或仅通过合并请求修复的情况);此外,基准任务尚缺乏用于验证修复正确性的测试预言(Oracle),且基于机器学习的任务分类因置信度不足而难以实施,这些缺失均制约了数据集的实用性与扩展性。
常用场景
经典使用场景
在软件缺陷修复研究领域,Partial-Fix Benchmark Set 被广泛用于评估自动化程序修复技术在处理部分修复场景时的有效性。该数据集聚焦于开发者首次尝试修复失败但提供了关键线索(如可疑代码区域和缺陷类型)的案例,为研究如何利用这些不完整的修复信息来生成更精准的补丁提供了标准化的测试平台。经典使用场景包括:基于部分修复的补丁生成、修复策略的优劣对比,以及修复工具在真实世界部分修复任务上的泛化能力验证。
解决学术问题
该数据集解决了自动化程序修复研究中一个长期被忽视的学术问题:如何系统性地利用部分修复(partial fixes)来提升修复效果。以往研究多假设开发者提交的补丁是完整的,但大量实证表明许多修复尝试是失败的或引入新缺陷。Partial-Fix Benchmark Set 通过提供 2,204 个来自真实开源项目的基准任务,使研究者能够量化分析部分修复的普遍性,并开发专门利用这些失败尝试中蕴含的语义信息(如代码位置和预期行为)的修复算法,从而推动该领域从“从零修复”向“辅助修复”范式演进。
衍生相关工作
该数据集催生了多项后续研究,包括:基于部分修复的补丁排序与优化算法(如利用失败修复中的代码变更差异指导搜索空间裁剪)、结合深度学习预测完整修复方案的方法(如从部分 diff 中学习修复模式),以及针对多版本修复序列的因果分析工具(如区分部分修复与最终修复的语义差异)。此外,该基准集还被扩展至其他语言(如 Java 和 Python)的部分修复场景,并启发了类似 Defects4J 等经典数据集的补充性研究,推动自动化程序修复领域向更贴近真实开发流程的方向发展。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务