feedback-to-code/mozzarella
收藏Hugging Face2024-07-18 更新2024-07-22 收录
下载链接:
https://hf-mirror.com/datasets/feedback-to-code/mozzarella
下载链接
链接失效反馈官方服务:
资源简介:
Mozzarella-0.3.1数据集是一个匹配GitHub上问题(问题陈述)和相应拉取请求(问题解决方案)的数据集,特别适用于Java代码库的故障定位和自动程序修复。数据集包含2734个任务,这些任务来自8个Java GitHub仓库,每个任务包含问题/拉取请求的详细信息、问题陈述、解决方案以及相关的代码更改。数据集还提供了三种不同的训练/验证/测试分割方式:随机分割、仓库分割和时间分割。
Mozzarella-0.3.1 is a dataset matching GitHub issues (problem statements) and corresponding pull requests (problem solutions), particularly suitable for fault localization and automated program repair in Java codebases. The dataset contains 2734 tasks from 8 Java GitHub repositories, each task including detailed information about the issue/pull request, the problem statement, the solution, and the relevant code changes. The dataset also provides three different train/validate/test splits: random split, repository split, and time split.
提供机构:
feedback-to-code
原始信息汇总
Mozzarella-0.3.1 数据集概述
基本信息
- 许可证: Apache 2.0
- 语言: 英语
- 标签: benchmark, code retrieval, code generation, java
- 规模: 1K<n<10K
动机
- 该数据集匹配了GitHub上一些维护良好的Java仓库中的问题(问题陈述)和相应的拉取请求(PR,问题解决方案)。
- 最初目的是为ML模型提供训练和评估数据,用于故障定位和复杂代码库的自动程序修复。
- 受SWEBench论文启发,该论文收集了类似的Python代码库数据(仅在文件级别)。
作者
- Feedback2Code学士项目,由Hasso Plattner Institute与SAP合作完成。
组成
- 每个实例称为一个任务,表示一个GitHub问题及其对应的修复匹配。
- 数据集包含2734个任务,来自8个仓库。
- 数据集包含三种不同的训练/验证/测试拆分:
- 随机拆分:任务按60/20/20的比例随机拆分。
- 仓库拆分:按60/20/20的比例分配仓库,任务随所属仓库拆分。
- 时间拆分:测试拆分中的任务创建时间早于验证拆分,训练拆分中的任务创建时间早于测试拆分。
包含的仓库
- mockito/mockito (MIT)
- square/retrofit (Apache 2.0)
- iluwatar/java-design-patterns (MIT)
- netty/netty (Apache 2.0)
- pinpoint-apm/pinpoint (Apache 2.0)
- kestra-io/kestra (Apache 2.0)
- provectus/kafka-ui (Apache 2.0)
- bazelbuild/bazel (Apache 2.0)
列信息
- instance_id: (str) - 任务/实例的唯一标识符。
- repo: (str) - GitHub仓库的所有者/名称标识符。
- issue_id: (str) - 问题/问题的格式化标识符。
- pr_id: (str) - 对应PR/解决方案的格式化实例标识符。
- linking_methods: (list str) - 创建任务的方法(如时间戳、关键词等)。
- base_commit: (str) - 解决方案PR应用前的仓库HEAD的提交哈希。
- merge_commit: (str) - PR合并后的仓库HEAD的提交哈希。
- hints_text: (str) - 问题上的评论。
- resolved_comments: (str) - PR上的评论。
- created_at: (str) - 拉取请求的创建日期。
- labeled_as: (list str) - 应用于问题的标签列表。
- problem_statement: (str) - 问题标题和正文。
- gold_files: (list str) - PR中更改的非测试文件路径列表。
- test_files: (list str) - PR中更改的测试文件路径列表。
- gold_patch: (str) - 由PR生成的黄金补丁(减去测试相关代码),作为diff。
- test_patch: (str) - 解决方案PR贡献的测试文件补丁,作为diff。
- split_random: (str) - 任务所属的随机拆分(train/test/val)。
- split_repo: (str) - 任务所属的仓库拆分(train/test/val)。
- split_time: (str) - 任务所属的时间拆分(train/test/val)。
数据收集过程
- 所有数据来自公开可访问的GitHub仓库,使用MIT或Apache-2.0许可证。
- 通过GitHub API收集问题和PR信息,使用以下链接方法创建任务实例:
- 连接:使用GitHub提供的功能,将PR分配给其解决的问题。
- 关键词:扫描PR和问题中的提及,检查匹配的接近度。
- 时间戳:通过检查关闭时间相近的问题和PR,使用OpenAI嵌入检查语义相似性。
预处理
- 删除了修改超过十个文件的任务(认为它们过于复杂)和未修改文件或仅修改测试文件的任务。
- 为提高时间戳链接的准确性,删除了仅通过时间戳链接的任务,如果存在关键词/连接任务建议不同的匹配或存在其他更高相似性的时间戳任务。
用途
- 用于训练和验证文件和方法级别的故障定位模型。
- 用于训练和验证自动代码生成/错误修复模型。
- 可能还有其他用途,但尚未探索。
维护
- 可能会很快添加更多仓库。所有字段可能会根据需要进行更改。
- 这是截至2024年7月18日的最新版本数据集。
许可证
- 版权所有2024 Feedback2Code
- 根据Apache许可证2.0版授权。
搜集汇总
数据集介绍

构建方式
在软件工程领域,高质量的代码修复数据对于训练智能程序分析模型至关重要。Mozzarella数据集通过系统化采集GitHub上八个维护良好的Java仓库,构建了2734个任务实例,每个实例精准匹配问题报告(Issue)与对应的拉取请求(PR)。数据收集过程依托GitHub API,采用连接关联、关键词匹配及时间戳结合语义相似性三种方法,确保问题与解决方案的可靠链接。预处理阶段剔除了修改文件过多或仅涉及测试的案例,以提升数据集的复杂性与实用性,为后续模型训练奠定坚实基础。
特点
该数据集在代码智能研究领域展现出独特价值,其核心特征体现在多维度的任务划分与丰富的元信息设计。数据集不仅提供随机划分,还创新性地引入基于仓库和时间的分割策略,分别考察模型跨项目与时间演化的泛化能力。每个任务实例囊括问题描述、解决方案、变更文件及补丁差异等结构化字段,并标注了链接方法、创建时间及标签信息,为细粒度的代码定位与生成任务提供了全面支持。这些精心设计的特性使其成为评估程序修复与代码检索模型的理想基准。
使用方法
研究者可借助该数据集开展代码缺陷定位与自动修复等前沿探索。使用前需依据具体研究目标选择合适的划分方式:若关注模型在未见项目上的表现,可采用仓库划分;若需模拟时间序列下的代码演化,则时间划分更为适宜。数据集中提供的gold_patch与test_patch分别对应非测试代码与测试代码的变更差异,可直接作为监督信号训练生成模型或评估补丁质量。此外,丰富的元数据如链接方法与注释文本,亦可用于增强模型的上下文理解与决策可解释性分析。
背景与挑战
背景概述
Mozzarella数据集由哈索·普拉特纳研究所与SAP合作的Feedback2Code学士项目于2024年创建,旨在为复杂代码库的故障定位与自动程序修复提供训练与评估数据。该数据集精心匹配了八个高质量Java GitHub仓库中的问题描述与对应拉取请求,共包含2734个任务实例,每个实例均涵盖问题陈述、解决方案及相关代码变更信息。其设计灵感来源于SWEBench论文,但专注于Java生态系统,通过随机、仓库和时间三种划分策略增强了数据集的多样性与实用性,为软件工程领域的机器学习研究提供了重要资源。
当前挑战
Mozzarella数据集致力于解决软件工程中故障定位与自动程序修复的核心挑战,即如何准确识别代码缺陷并生成有效修复方案。在构建过程中,面临多重技术难题:首先,需从海量GitHub数据中精确关联问题与拉取请求,通过连接标记、关键词匹配和时间戳语义相似性等多重方法确保配对准确性;其次,数据筛选需平衡复杂度与实用性,排除修改超过十个文件或仅涉及测试文件的任务以保持数据集聚焦性;此外,时间划分策略要求严格按任务创建时间排序,增加了数据时序一致性的维护难度。
常用场景
经典使用场景
在软件工程与人工智能交叉领域,Mozzarella数据集为代码检索与生成任务提供了关键资源。其核心应用场景聚焦于训练和评估机器学习模型,特别是针对复杂Java代码库的故障定位与自动程序修复。通过精准匹配GitHub问题描述与对应的拉取请求,数据集构建了从问题陈述到人工解决方案的完整映射,为模型学习代码变更模式奠定了坚实基础。
解决学术问题
该数据集有效应对了程序修复研究中高质量标注数据稀缺的挑战。它通过系统化收集真实开发场景中的问题-解决对,为学术界提供了可复现的基准测试环境。其意义在于推动了基于深度学习的代码理解与生成技术发展,使得模型能够从人类开发者的实际修复行为中学习,从而提升自动化修复的准确性与泛化能力,对软件维护智能化产生了深远影响。
衍生相关工作
该数据集的设计灵感源于SWEBench等基准测试工作,并在此基础上将范围扩展至Java生态。其衍生的经典研究方向包括基于检索的代码补全、细粒度故障定位以及端到端程序修复。相关研究通过利用数据集提供的文件级与方法级变更信息,开发了多种神经网络架构,显著提升了模型在理解代码上下文与生成正确补丁方面的性能,持续推动着智能软件工程工具的演进。
以上内容由遇见数据集搜集并总结生成



