遇见数据集

CoCoMUT method-context records

收藏
arXiv2026-07-01 更新2026-07-02 收录
数据链接:
官方服务:

资源简介:

CoCoMUT方法上下文数据集由德克萨斯大学达拉斯分校等机构联合创建,是一个专为软件工程任务设计的Java代码上下文标准化数据集。该数据集包含56,512条方法级记录,每条记录整合了源代码实现、类环境、文档注释、调用图关系及元数据等多维度信息,覆盖20个真实世界Java仓库的完整分析结果。数据集通过自动化流水线生成,结合Spoon源码分析与SootUp字节码解析技术,实现了高达97.8%的源码-字节码对齐精度。该数据集主要应用于代码摘要生成、测试用例构建、程序修复等软件工程智能化任务,为机器学习模型提供可复现的结构化上下文输入。

The CoCoMUT Method Context Dataset was jointly developed by The University of Texas at Dallas and other institutions. It is a standardized Java code context dataset specifically designed for software engineering tasks. This dataset comprises 56,512 method-level records, with each record integrating multi-dimensional information such as source code implementations, class environments, documentation comments, call graph relationships and metadata, covering the complete analysis results of 20 real-world Java repositories. Generated via an automated pipeline that combines Spoon source code analysis and SootUp bytecode parsing technologies, the dataset achieves a source code-to-bytecode alignment accuracy of up to 97.8%. Primarily applied to intelligent software engineering tasks including code summarization generation, test case construction and program repair, the dataset provides reproducible structured context inputs for machine learning models.

创建时间:
2026-07-01
原始信息汇总

数据集概述:CoCoMUT 🥥

CoCoMUT 是一个用于从 Java 代码仓库中提取方法级上下文(Method-Level Context)的工具/数据集构建器,专为文档相关研究设计。它从 Java 方法中提取结构化信息,并以 JSONL 格式输出,包含源代码、Javadoc、类型上下文、文档元数据、来源信息以及静态字节码调用上下文。

核心特性

  • 基于编译项目的提取:支持从 Java 源码、项目类文件、构建输出目录或项目 JAR 中提取。
  • 稳定的方法标识:通过路径、限定类型、擦除参数类型和擦除返回类型唯一标识方法。
  • Javadoc 感知上下文:解析 @see{@link ...}{@inheritDoc}、结构化标签、文档度量以及引用的项目符号。
  • 静态字节码调用上下文:提供调用者/被调用者关系,在字节码目标可确定映射到项目源码方法时进行源码关联。
  • 研究友好型输出:生成 JSONL 文件,附带提取报告和无需依赖的 Web 查看器。

输出内容(每行 JSONL 记录)

每行 JSONL 记录包含以下信息:

  • 方法信息:URI、签名、源代码、Javadoc、参数、返回类型、注解、抛出的异常、源码位置。
  • 类型上下文:类 Javadoc、层级结构、字段、重载方法、兄弟方法、文档度量。
  • 解析的 Javadoc 引用:包含目标类型、领域、作用域分类。
  • 调用上下文:来自静态字节码分析的调用者/被调用者,当字节码目标唯一映射到源码方法时进行项目源码关联。
  • 来源字段:描述后端模式、解析置信度、失败信息及选定目标。

快速开始

  1. 克隆仓库并运行测试: bash git clone https://github.com/assert-lab/CoCoMUT.git cd CoCoMUT ./mvnw test

  2. 在 Java 项目上运行 CoCoMUT: bash ./bin/cocomut --project /path/to/java/project --scope entry-points --source-set main --allow-build

  3. 使用 JSONL 查看器浏览输出: bash python3 scripts/method_contexts_viewer.py ./cocomut_output

输出结构

默认输出路径:

./cocomut_output/<project-name>-<path-hash>/method_contexts__<request-hash>.jsonl

重要注意事项

  • 当前状态:CoCoMUT 仅支持 Java 17+,且仅进行静态分析,不执行应用程序代码或测试。
  • 构建安全:默认不执行仓库控制的 Maven/Gradle 构建,--allow-build 参数仅用于受信任的代码仓库,或使用 --externally-sandboxed-build 通过容器/VM 沙箱构建。
  • 依赖条件:被分析的项目必须提供可用的字节码(如类文件或 JAR),否则无法成功提取。

许可证

Apache 2.0

搜集汇总
数据集介绍
CoCoMUT method-context records 数据集图片
构建方式
在软件工程研究中,方法级别的上下文信息对于诸多任务至关重要,然而手动收集此类信息既耗时又难以复现。为此,CoCoMUT method-context records 数据集应运而生,其构建依托于 CoCoMUT 这一自动化代码上下文挖掘与数据集生成工具。对于给定的 Java 项目,CoCoMUT 首先通过 Maven 或 Gradle 构建系统发现项目结构并解析类路径,继而利用 Spoon 框架构建源代码模型以提取方法签名、文档、类型层次等元数据,同时借助 SootUp 对编译后的字节码执行静态调用图分析,生成基于 CHA 或 RTA 的调用关系边。随后,工具通过源字节码协调机制,将字节码级别的调用目标与方法级别的稳定 URI 进行唯一匹配,最终为每个选定的方法生成一条包含身份标识、实现代码、局部类上下文、结构化文档、调用者与被调用者边、层级信息、结构度量以及溯源置信度元数据的版本化 JSONL 记录。
特点
该数据集的核心特点在于其任务无关性与上下文丰富性,为多种软件工程下游任务提供了统一的输入范式。每条方法记录严格遵循精心设计的模式,涵盖了身份与源码、局部类、文档、调用图及溯源与置信度五大上下文家族,全面反映了方法的全貌。特别地,数据集在调用图处理上采用了源字节码协调策略,仅当字节码调用目标与方法源代码之间存在唯一确定匹配时才赋予源级 URI,对于存在多重歧义或无匹配目标的调用边则保留字节码身份并显式标记,这不仅避免了错误的源链接,还提供了明确的置信度信息。在 20 个真实世界 Java 仓库上的评估显示,数据集生成了 56,512 条方法上下文记录及 386,048 条序列化调用边,对项目源码调用目标的协调率高达 97.8%,且经过人工审计,99% 的记录通过了全部适用性正确性检查。
使用方法
使用该数据集时,研究人员可根据具体任务需求灵活选取数据粒度和使用方式。数据集以 JSONL 格式逐行序列化,每条记录自包含一个焦点方法的完整上下文,既可作为独立输入提供给代码解释、文档生成、测试生成、程序修复等任务的模型进行推理,亦可按方法、类、包或整个系统范围聚合为数据集,用于大规模训练与评估。用户可直接利用工具暴露的 CLI 接口、可执行 JAR 包或 Java 服务 API,通过指定项目路径、提取范围及调用图算法等参数完成定制化生成。对于已发布的档案数据,任何支持 JSON 解析的编程环境均可直接加载记录中的字段,例如从身份字段获取稳定 URI 以标识方法,从调用图字段提取目标 URI 与源方法 URI 用于分析调用关系,从文档字段获取结构化 Javadoc 以便进行文档层面的任务。
背景与挑战
背景概述
在软件工程辅助工具的发展中,方法级上下文信息——包括封装类信息、文档、调用者与被调用者、类型层次结构以及结构特征——对于提升代码理解、测试生成、程序修复等任务的性能至关重要。然而,手动收集此类上下文不仅耗时且难以保证一致性,更难以在大型Java项目中复现。为应对这一挑战,由德克萨斯大学达拉斯分校的Alessandro Botta及其合作者于2026年提出了CoCoMUT工具,旨在实现代码上下文的自动挖掘与数据集生成。该工具通过集成构建发现、源码提取、调用图构建、源码与字节码的协调以及版本化JSON数据集生成,为可复现的软件工程技术训练与运行提供了统一、任务无关的流水线。CoCoMUT在20个真实Java项目上的评估中成功处理了全部仓库,生成了56,512条方法上下文记录与386,048条序列化调用边,其99%的手工审计通过率彰显了其在方法级上下文提取领域的重要影响力与可信度。
当前挑战
CoCoMUT所应对的核心领域挑战在于,众多软件工程任务需要的上下文信息散布于源码、内联文档、类型层次、依赖关系乃至编译后的字节码之中,传统的任务特定提取流水线因方法标识、依赖解析和上下文边界假设的差异而阻碍了比较与可复现性。具体而言,Java语言特性如可重写方法和接口方法导致多运行时目标,重载、嵌套与匿名类型、继承及泛型使稳定方法标识变得极为复杂。在构建过程中,CoCoMUT面临的关键挑战包括:如何自动化解析Maven与Gradle项目的构建结构与类路径;如何将Spoon源码模型与SootUp字节码调用图进行唯一性匹配以协调源码与字节码间的方法标识差异;以及如何在面对编译器生成的桥接方法、Lambda制品及外部依赖时,仅在接受唯一确定性匹配时附加源码级方法标识,而在歧义或缺失时仅保留字节码标识并明确记录弃权元数据,从而避免产生虚假的源链接。
常用场景
经典使用场景
在软件工程研究领域,CoCoMUT方法上下文记录数据集最经典的使用场景,是为基于深度学习和大语言模型的代码智能任务提供结构完善、可复现的方法级上下文。该数据集通过整合方法本体、封装类信息、调用图关系、Javadoc文档以及类型层次结构等多维信息,使得代码摘要生成、自动化测试构造、程序修复与缺陷定位等任务能够获得超越单一方法体的丰富语义支撑。研究者可借助该数据集构建统一的上下文输入格式,从而在训练和评估阶段消除因手工提取不一致而引入的偏差,为跨项目、跨任务的对比实验奠定了坚实的数据基础。
衍生相关工作
基于CoCoMUT丰富的方法上下文记录,一系列经典衍生工作得以开展。在代码摘要与解释方面,研究者借鉴其统一的数据模式,训练出能够融合文件级与类级上下文的深度学习模型,显著提升了方法名称与功能描述的生成质量。在测试生成领域,该数据集为自动化单元测试工具提供了焦点方法及其依赖剖面的标准化输入,催生了如Doc2oracll等一系列利用结构文档提升测试断言准确性的工作。此外,该方法上下文模式还被引入至程序修复与缺陷定位任务,通过清晰的调用边与类型层次信息,使得检索增强型代码补全和自主程序改进工具能够更精准地定位错误根源与实施修复。
数据集最近研究
最新研究方向
在大规模语言模型驱动的软件工程自动化浪潮中,如何为下游任务提供高质量、结构化的方法级上下文成为关键瓶颈。CoCoMUT数据集的诞生精准回应了这一挑战,其通过融合Spoon源码分析与SootUp字节码调用图构建,开创性地实现了源码与字节码之间的确定性对齐,以97.8%的惊人调和率将386,048条调用边映射至源码方法实体。这一技术路径突破了传统工具在泛型擦除、合成方法等场景下的身份模糊困境,为代码解释、测试生成与程序修复等领域提供了可复现、版本化的上下文基座。在200条记录的人工审核中99%的正确率,标志着方法级语义挖掘从零散、不可复现的实验脚本迈向标准化、可信赖的工业化基础设施,深刻重塑了上下文感知软件工程的评价范式与研究根基。
相关研究论文
  • 1
    CoCoMUT: A Tool for Code-Context Mining and Automated Dataset Generation德克萨斯大学达拉斯分校; 遗产高中; 威廉与玛丽学院 · 2026年
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务