CDNA-CoDET-M4
收藏CDNA-CoDET-M4 数据集概述
数据集基本信息
- 数据集名称:CDNA-CoDET-M4: Code Authorship Attribution via Code Property Graphs (Enhanced)
- 数据集地址:https://huggingface.co/datasets/mohameddhameem/CDNA-CoDET-M4
- 许可证:MIT License
- 语言:英语、代码
- 任务类别:文本分类
- 规模类别:1M < n < 10M
- 多语言性:多语言
- 注释创建者:无注释
- 源数据集:DaniilOr/CoDET-M4
数据集摘要
此数据集是新加坡管理大学CodeDNA团队对原始CoDET-M4数据集的增强版本,旨在解决LLM代码作者归属问题。数据集通过将代码片段转换为代码属性图来捕获更深层次、更可靠的风格指纹。它包含约77K个Python和Java样本,涵盖6个模型和一个人类编写的基线,并提供两种即用型配置。
数据集详情
语言与任务
- 编程语言:Python, Java
- 任务:多类别代码作者归属(6分类)
- 类别:GPT-4o, CodeLlama, Llama 3.1, Nxcode, CodeQwen 1.5, Human
- 分析单元:独立函数(非完整仓库)
配置
CDNA-CoDET-M4作为单个Hugging Face数据集发布,包含两种配置:
hetero – 异构代码属性图
通过Joern静态分析提取的完整图结构表示,结合了AST、CFG和PDG信息。
- 图表示:异构多重图(多种边类型:控制流、数据流、语法)
- 节点特征:语法类型、源代码标记序列、语义角色
- 边特征:边类型标签
- 样本数:33,342
- 数据大小:约11 GB(数据集),约23 GB(未压缩)
scalar – 聚合结构特征
从CPG派生的预处理汇总统计数据,适用于传统ML基线和可解释性研究。
- 特征集:22个手工制作的结构度量
- 格式:表格(数字向量以及代码文本和元数据)
- 样本数:77,332
- 数据大小:约26 GB(数据集),约54 GB(未压缩)
数据划分
两种配置遵循相同的划分结构:
| 划分 | 数量 | 用途 |
|---|---|---|
| 训练集 | 每种语言约20,000 | 模型训练 |
| 验证集 | 每种语言约2,000 | 超参数调优 |
| 测试集 | 每种语言约17,700 | 最终评估 |
数据格式与模式
通用字段(两种配置):
| 字段 | 类型 | 描述 |
|---|---|---|
idx |
int64 | 唯一样本标识符 |
hash |
string | 内容哈希 |
target |
string | 源LLM或"human" |
model |
string | 完整模型标识符 |
language |
string | "python"或"java" |
split |
string | "train", "validation", 或 "test" |
source |
string | 生成上下文或数据源 |
code |
string | 原始源代码 |
graphml |
string | GraphML序列化的CPG(hetero)或空(scalar) |
附加标量特征(scalar配置):
| 字段 | 类型 | 描述 |
|---|---|---|
cyclomatic_complexity |
float | McCabe复杂度度量 |
lines_of_code |
int | 物理LOC |
fan_in |
int | 不同的数据源 |
fan_out |
int | 不同的数据目标 |
graph_density |
float | 边与可能边的比率 |
| (+17个附加度量) | — | 参见模式元数据 |
数据格式
- 文件格式:Apache Arrow
- 划分:22个Arrow分片(hetero),54个Arrow分片(scalar)
- 压缩:LZ4
数据集创建
代码生成与收集
- LLM提示:六个最先进的代码生成模型被独立提示,为不同领域生成单函数实现。
- 采样策略:提示涵盖5-10个不同的算法领域以确保多样性。
- 过滤:排除解析失败或产生语法错误的样本。
代码属性图提取
- 工具:Joern静态分析框架
- 提取步骤:解析、控制流、数据流、异构集成。
- 归一化:节点特征标准化、边类型分层、图大小限制。
预处理与特征工程
- 标量特征计算:McCabe圈复杂度、Halstead体积度量等。
- 划分:按语言和模型进行分层随机划分。
- 序列化:hetero配置使用GraphML格式,scalar配置使用Arrow原生数字列。
数据质量与来源
- 无手动注释:真实标签是确定性的。
- 去重:通过内容哈希删除重复代码片段。
- 偏差缓解:按模型分层采样以避免类别不平衡。
- 可重复性:固定随机种子;版本化提示。
预期用途与限制
主要用例
- LLM代码指纹研究
- 比较分析
- 结构理解
- 基线建立
已记录的限制
- C++支持:由于Joern静态分析器的限制,目前未包含。
- 单函数范围:数据集包含独立函数,而非完整仓库或多文件项目。
- 合成数据来源:所有代码均为LLM生成或人类开源代码。
- 领域偏移:测试分布与训练集来自相同问题领域。
- 训练数据重叠:某些LLM可能共享指令调优语料库。
- 粒度敏感性:此数据集仅为函数级别。
- 评估方法:基线比较使用宏平均F1分数。
超出范围
- 生产取证:此数据集未经验证用于现实世界源代码调查或法律证据环境。
- 对抗鲁棒性:未针对代码混淆、风格转移或故意模型欺骗攻击进行测试。
- 现实世界人类代码:在此数据集上训练的作者归属模型不应假定适用于任意生产代码。
个人信息与伦理考量
- 负责任使用指南:引用此数据集时应讨论其约束。
许可
此数据集根据MIT许可证发布。
引用
如果使用CoDET-M4进行发表研究,请引用: bibtex @dataset{codedna_codetm4, title = {{CDNA-CoDET-M4}: Code Authorship Attribution via Code Property Graphs}, authors = {Gusta, Avisenna and Yinqi, Gu and Sia, Sim Kim and Mohamed, Dhameem and Shenghua, Ye}, year = {2025}, school = {Singapore Management University, School of Computing and Information Systems}, url = {https://huggingface.co/datasets/mohameddhameem/CDNA-CoDET-M4} }
快速开始
安装
bash pip install datasets
加载数据集
python from datasets import load_dataset dataset_hetero = load_dataset("mohameddhameem/CDNA-CoDET-M4", "hetero") dataset_scalar = load_dataset("mohameddhameem/CDNA-CoDET-M4", "scalar")
致谢
此数据集是新加坡管理大学计算与信息系统学院CodeDNA研究项目的一部分。




