Page 73 - 《软件学报》2025年第4期
P. 73
孙伟松 等: 深度代码模型安全综述 1479
表 5 深度代码模型安全性研究常用基准数据集 (续)
发表
数据名称 编程语言 数据来源 数据量 下载地址 应用场景
年份
Java
C/C++
Python 程序理解 (代码摘要、
CodeXGLUE [83] 2021 PHP 开源项目 - https://github.com/microsoft/CodeXGLUE 代码克隆检测、代码
JavaScript 漏洞检测等)
Ruby
Go
CodeQA [84] 2021 Java 开源项目 119 778 https://github.com/jadecxliu/codeqa 代码问答
Python 70 085
APPS [85] 2021 Python OJ平台 10 000 https://people.eecs.berkeley.edu/~hendryck 代码生成
s/APPS.tar.gz
汇编语言 https://github.com/dessertlab/Shellcode_IA 汇编代码生成、
[86]
Shellcode_IA32 2021 开源代码 3 200
指令 32 汇编代码摘要
SecurityEval [87] 2022 Python 开源项目 130 https://github.com/s2e-lab/SecurityEval 代码生成
万个无注释函数. 这些函数涵盖了
[88] https://github.com/tuhh-
LLMSecEval 2023 Python C 开源项目 150 代码生成
softsec/LLMSecEval
PoisonPy [50] 2023 Python 开源项目 823 暂未公开 代码生成
SPEC2000 数据集是由标准性能评估公司 (SPEC) 发布的一组基准测试, 用于评估计算机系统的性能. 该数据
集可用于训练二进制代码相关的任务, 并评估二进制代码模型的安全性. SPEC2000 数据集包含一系列基准测试
程序, 涵盖了不同的应用领域, 以提供全面的性能评估. 这些基准测试程序主要分为两个子集, 分别是 CINT2000
以及 CFP2000.
BigCloneBench 是由 Svajlenko 等人 [47] 在 2014 年提出的, 该数据集可用于训练代码克隆检测和代码克隆搜索
模型. 该数据集由大数据项目存储库 IJaDataset 2.0 (http://secold.org/projects/seclone) 中已知真假克隆的代码片段
构成. 作者使用搜索启发式方法自动识别 IJaDataset 中可能实现目标功能的代码片段, 并在基准测试中填充了标
记过程发现的真克隆和假克隆. 作者对每个克隆进行典型化 (typify) 并测量它们的语法相似性. 当前版本的
BigCloneBench 涵盖 10 种功能, 包括 600 万个真克隆对和 26 万个假克隆对.
Open judge (OJ) dataset 是由 Mou 等人 [74] 在 2016 年提出的源代码分类基准数据集. 该数据可用于训练代码分
类任务模型. 该数据集来自开放的 OJ 平台, 由 52 000 个带有问题编号标签的 C/C++代码文件组成, 该 OJ 中有
104 个类, 每个类包含 500 个代码文件.
CodeSearchNet 是 2019 年 Husain 等人 [46] 提出的数据集, 该数据主要可用于训练代码搜索和代码摘要模型. 该
数据集包含 99 个自然语言查询 (NL query), 以及来自 CodeSearchNet 语料库的约 4 000 条注释, 还包括来自开源
代码的约 600 万个函数. 作者将这些函数与对应文档中的自然语言进行配对, 组成注释-代码数据对, 其中注释是
顶层函数或方法注释 (例如 Python 中的 docstrings), 而代码是一个完整的函数或方法. 最终构造的数据集中约有
200 万个带注释函数和约 400 6 种编程语言, 包括 Go、Java、JavaScript、PHP、
Python 和 Ruby. 该数据集可用于代码检索、代码理解和代码推理等任务.
Code2Seq 是由 Alon 等人 [50] 在 2019 年提出的, 该数据集可用于训练代码摘要、代码文档生成和代码搜索模
型. 该数据集包含 Java 程序语言数据, 分为 Java-small、Java-med 和 Java-large 这 3 种不同大小规模. 其中, Java-
small 从 11 个大型 Java 项目搜集而来, 包含大约 70 万个程序示例, 并按照 9:1:1 划分为训练集、验证集和测试集.
Java-med 收集自 GitHub 的 1 000 个大型 Java 项目, 包含大约 400 万个程序示例, 其中训练集、验证集和测试的划
分比例为 8:1:1. Java-large 来自 GitHub 上 9 500 个大型 Java 项目, 该数据集包含大约 1 600 万个程序示例, 并以
18:5:6 的比例划分为训练集、验证集和测试集.
Devign 是由 Zhou 等人 [48] 在 2019 年提出的用于缺陷检测任务的数据集, 可用于训练代码缺陷检测模型. 作者