BugsPHP
收藏数据链接:
官方服务:
资源简介:
BugsPHP是由莫拉图瓦大学创建的一个用于自动化程序修复的PHP程序错误数据集。该数据集包含653,606个训练数据和513个测试数据,均从GitHub上的PHP项目中提取。数据集的创建过程涉及从GitHub API筛选和验证,确保数据的质量和适用性。BugsPHP主要用于训练和评估自动化程序修复工具,特别是在PHP应用中的错误修复和测试。
BugsPHP is a PHP program bug dataset for automated program repair, created by the University of Moratuwa. This dataset contains 653,606 training instances and 513 test instances, all extracted from PHP projects hosted on GitHub. Its construction involves screening and validation via the GitHub API to ensure the quality and applicability of the data. BugsPHP is primarily used for training and evaluating automated program repair tools, particularly for bug fixing and testing in PHP applications.
提供机构:
莫拉图瓦大学创建时间:
2024-01-15
搜集汇总
数据集介绍

构建方式
BugsPHP 数据集的构建始于从 GitHub REST API 抓取 5000 个最受欢迎的 PHP 仓库,确保这些仓库在 2021 年 1 月后仍有活跃提交。随后,通过筛选包含“fix”、“bug”等关键词的修复提交,并限定文件修改数不超过 3 个、代码行变动不超过 50 行,来提取潜在的缺陷数据。对于测试数据集,研究团队从排名前 75 的仓库中手动验证每个缺陷的修复版本是否具备可执行的测试用例,并在 PHP 8.1 环境下运行,通过测试覆盖率报告定位相关测试,确保缺陷版本至少触发一个失败测试。最终,训练数据集包含 653,606 个修复提交,涵盖 4483 个应用;测试数据集则包含 513 个经动态验证的缺陷,每个缺陷均附有缺陷版本、修复版本及对应的测试用例。
特点
BugsPHP 数据集具备显著的结构化与实用性特征。其训练数据集规模宏大,包含超过 65 万个修复提交,为深度学习模型提供了充足的训练样本;测试数据集中的 513 个缺陷均经过严格的动态验证,每个缺陷至少关联一个失败测试用例,确保评估的可靠性。数据集的缺陷类型分布广泛,约 90% 为功能性错误,其余涵盖类型错误、安全漏洞、兼容性问题等,反映了 PHP 应用的真实缺陷生态。此外,大多数修复提交仅涉及单文件修改(训练集占 76.3%,测试集占 92.2%),且代码行变动集中在 1 至 10 行之间,体现了 PHP 缺陷修复的典型简洁性。这些特性使得 BugsPHP 既适用于传统程序修复技术的评估,也适合作为学习型修复模型的训练与基准测试平台。
使用方法
BugsPHP 数据集的使用方法灵活多样,旨在支持自动化程序修复的研究与开发。训练数据集可直接用于训练基于深度学习的修复模型,如 CURE 或 RewardRepair,研究者只需提取每个修复提交中的缺陷版本与修复版本文件,并结合元数据(如提交 ID、变更行号)进行模型训练。测试数据集则提供了标准化的评估流程:针对每个缺陷,研究者可运行修复工具生成候选补丁,然后利用附带的测试用例验证补丁的正确性,通过统计通过所有测试的补丁数量来衡量修复效果。数据集还支持缺陷类型分析,研究者可基于分类标签(如功能错误、安全漏洞)进行针对性研究。所有数据均托管于公开的 GitHub 仓库,便于直接克隆与集成到现有工作流中。
背景与挑战
背景概述
在软件工程领域,自动化程序修复(APR)技术通过节省调试与缺陷修复时间,显著提升了开发者的生产效率。然而,尽管PHP作为服务器端脚本语言已主导Web开发逾二十年,广泛应用于电子商务、社交网络及内容管理系统等场景,其缺陷修复研究却因缺乏标准化基准数据集而长期滞后。为填补这一空白,斯里兰卡莫拉图瓦大学的K.D. Pramod等人于2024年发布了BugsPHP数据集,该数据集包含从5000个GitHub仓库中筛选的653,606个训练用缺陷修复提交和513个经人工验证的测试用缺陷样本,每个测试样本均附带开发者提供的测试用例。BugsPHP的提出为PHP程序的缺陷分析、测试及自动化修复研究提供了关键基础设施,推动了APR技术在PHP语言领域的应用与评估。
当前挑战
BugsPHP所解决的领域问题核心在于,现有APR研究主要集中于C/C++、Java、Python及JavaScript等语言,而PHP因缺乏高质量缺陷数据集导致相关修复技术发展滞后。构建过程中面临多重挑战:首先,需从海量GitHub仓库中精准筛选活跃且高质量的PHP项目,通过星标数、最近提交日期等指标排序,并排除维护不善的仓库;其次,缺陷提交的过滤标准需兼顾代表性与可操作性,例如仅保留修改PHP文件、变更文件数不超过3个且行数不超过50行的提交,以消除重构噪声;最后,测试数据集的构建需通过动态验证,确保每个缺陷在修复前至少有一个失败测试用例,这要求对固定版本运行全部测试并生成覆盖率报告,再反向验证缺陷版本,过程繁琐且依赖开发者提供的测试框架兼容性。
常用场景
经典使用场景
在软件工程与程序语言研究领域,BugsPHP数据集为自动化程序修复(APR)技术提供了首个面向PHP语言的大规模基准。该数据集包含超过65万条训练样本与513个经过人工验证的测试用例,覆盖了从轻量级功能错误到严重安全漏洞的多种缺陷类型。研究者可基于此数据集训练深度学习修复模型,或评估传统符号化修复方法的效能,从而填补了PHP语言在APR研究中长期缺失标准化评估平台的空白。
解决学术问题
BugsPHP数据集有效解决了PHP领域缺乏高质量、可复现缺陷基准的学术困境。此前,C/C++与Java等语言已有Defects4J、ManyBugs等成熟数据集,但PHP作为驱动全球77.5%网站的服务端语言,其程序缺陷的系统性研究却因数据匮乏而停滞。该数据集通过提供带开发者验证测试用例的缺陷与修复配对,使研究者能够精准衡量修复补丁的正确性,进而推动了对弱类型语言特有错误模式(如类型错误、兼容性问题)的深入分析,并促进了APR技术从实验室环境向真实Web应用的迁移。
衍生相关工作
BugsPHP数据集的发布已催生了一系列衍生研究。一方面,研究者利用其训练集对CURE、RewardRepair等主流APR模型进行迁移学习,发现现有模型在多行补丁生成与语义等价修复方面仍存在局限,从而启发了针对PHP语言特性的新型修复架构设计(如结合AST模式匹配的混合模型)。另一方面,该数据集与Defects4J、BugsInPy等跨语言基准的对比分析,揭示了不同语言缺陷分布与修复难度的差异,为构建语言无关的通用修复框架提供了实证基础。此外,基于BugsPHP的缺陷类型标注,已有工作开始探索PHP代码异味检测与自动重构的联合优化方法。
以上内容由遇见数据集搜集并总结生成



