CodeNet
收藏arXiv2021-08-30 更新2024-08-06 收录
下载链接:
http://arxiv.org/abs/2105.12655v2
下载链接
链接失效反馈官方服务:
资源简介:
CodeNet是由IBM研究院创建的一个大规模数据集,包含超过1400万个代码样本和约5亿行代码,涵盖55种不同的编程语言。数据集主要从AIZU和AtCoder两个在线评判系统中收集,用于支持AI在编程领域的学习和研究。CodeNet不仅规模庞大,还提供了丰富的标注数据,用于代码相似性、分类、跨语言代码翻译以及代码性能优化等任务的研究。此外,数据集还提供了样本输入和输出测试集,用于确定代码的正确性,并可能指导代码质量改进的强化学习。CodeNet的应用领域广泛,旨在解决提高软件开发效率和现代化遗留应用程序的关键问题。
CodeNet is a large-scale dataset created by IBM Research, containing over 14 million code samples and approximately 500 million lines of code across 55 distinct programming languages. The dataset is primarily collected from two online judging systems, AIZU and AtCoder, to support AI-related learning and research in the field of programming. Not only does CodeNet boast a massive scale, but it also provides richly annotated data for research on tasks such as code similarity detection, code classification, cross-language code translation, and code performance optimization. Additionally, the dataset offers paired input and output test sets to verify the correctness of code, and may guide reinforcement learning for code quality improvement. CodeNet has a wide range of application scenarios, aiming to address critical issues including improving software development efficiency and modernizing legacy applications.
提供机构:
IBM研究院
创建时间:
2021-05-25
搜集汇总
数据集介绍

构建方式
CodeNet数据集由IBM构建,主要源自AIZU Online Judge和AtCoder两个在线判题系统,涵盖超过1390万次提交,涉及4053个编程问题。数据集中,同一OJ问题的所有通过提交被视为至少Type-4级别的代码克隆。为构建评估基准,研究者从CodeNet中选取了14个OJ问题,其代码对相似度覆盖20%至100%的范围,用于召回率评估。同时,通过计算问题描述文本的Jaccard相似度,将问题对分为三个相似度区间(0-30%、30-60%、60-90%),每个区间随机选取30对问题,共90个子集,用于评估检测器的精确率。
特点
CodeNet数据集具有显著的多语言支持特性,包含超过50种编程语言的代码,其中以C、C++、Java和Python为主,是目前支持语言数量最多的代码克隆检测基准之一。该数据集基于在线判题系统的特性,天然地将同一问题的通过提交标注为克隆,避免了人工标注的巨大工作量。此外,数据集提供了丰富的元数据,包括源代码、问题描述、执行结果等,支持从文件级别到函数级别的多粒度克隆检测评估,能够全面衡量检测器在不同语言和相似度区间上的性能表现。
使用方法
使用CodeNet数据集进行代码克隆检测评估时,研究者需首先对源代码进行预处理,去除注释和连续空白符。对于召回率评估,将检测器对每个OJ问题子集报告的克隆结果与基准中的克隆对进行匹配,采用行覆盖率不低于70%的克隆匹配器。精确率评估则通过将不同问题的代码对视为非克隆,计算检测器误报的比例。检测器需配置为文件级别检测,最小令牌数设为20,相似度阈值设为70%。该基准支持对MSCCD、NiCad、CCFinderSW和SourcererCC等多语言克隆检测器进行系统化的性能比较。
背景与挑战
背景概述
随着编程语言种类与版本的快速增长,代码克隆检测工具的语言可扩展性成为一项关键挑战。现有检测器多依赖特定语言的源码处理器,扩展新语言需耗费大量专业知识与时间。为应对这一困境,名古屋大学、立命馆大学等机构的研究团队于2024年提出了基于ANTLR解析器生成的多语言代码克隆检测工具MSCCD及其评测基准CodeNet。该数据集以IBM的CodeNet数据库为基础,汇集了来自AIZU Online Judge与AtCoder等在线评测系统的海量提交记录,覆盖C、C++、Java、Python等多种语言。CodeNet的核心研究问题在于:如何在保持检测性能的同时,实现跨语言的高效克隆检测与公平评测。该数据集不仅为多语言克隆检测提供了首个标准化评价基准,更揭示了同一检测方法在不同语言上性能迥异的现象,对代码克隆领域的语言多样性研究具有里程碑式的影响力。
当前挑战
CodeNet数据集面临的首要挑战是领域问题:如何精准检测Type-3克隆(语句级相似克隆)并实现高效的多语言扩展。现有检测器在Java上表现优异,但在C、C++、Python等语言上召回率与精确度波动显著,如MSCCD在Python的Type-3克隆召回率仅42%,远低于Java的81%。其次,构建过程面临严峻考验:基于ANTLR的解析器在实际应用中易出现语法分析错误,导致18种语言仅支持文件级检测;部分语言(如Lua)因语法规则无法转换为正则表达式而难以支持;此外,评测基准的构建需人工标注海量克隆对,而OJ系统中不同问题的代码可能因共享子目标而产生误报,精确度评测组III中C语言的精确度低至64.1%,凸显了克隆判定的争议性与基准设计的复杂性。
常用场景
经典使用场景
CodeNet数据集在软件工程领域最经典的使用场景是作为多语言代码克隆检测的基准测试平台。研究者利用该数据集中来自在线评测系统的海量提交记录,构建了覆盖Java、Python、C和C++四种语言的代码克隆检测评估基准。通过将同一编程问题的成功提交视为至少Type-4级别的代码克隆,CodeNet为评估检测器的召回率和精确度提供了天然标注的数据基础。这一场景的核心价值在于突破了传统基准仅支持单一语言的局限,使得跨语言比较代码克隆检测算法的性能成为可能,从而推动了多语言环境下软件维护技术的发展。
实际应用
在实际软件工程应用中,CodeNet数据集支撑了多语言代码克隆检测系统的开发与部署,特别是在大型异构软件系统的质量保障中发挥关键作用。现代软件系统常混合使用多种编程语言,统一使用一个支持多语言的克隆检测器能够避免不同工具间因精度、粒度和输出格式差异带来的集成成本。基于CodeNet训练的检测器可直接用于企业级代码库中的缺陷传播分析、自动软件修复和代码重构支持。此外,该数据集还为在线评测平台提供了代码相似度判重的底层支持,有效维护了编程竞赛的公平性,成为连接学术研究与工业实践的桥梁。
衍生相关工作
CodeNet数据集衍生了一系列具有影响力的经典研究工作,其中最具代表性的是MSCCD多语言代码克隆检测器的提出与评估。研究者基于CodeNet构建了首个多语言语法级代码克隆检测基准,并在此框架下对比了MSCCD与NiCad、CCFinderSW等工具的检测性能,揭示了不同语言上检测效果的显著差异。此外,该数据集还被用于评估深度学习克隆检测器的泛化能力,如Choi等人的工作发现CodeBERT在跨基准测试时性能急剧下降。这些衍生工作不仅验证了CodeNet作为评估平台的有效性,更推动了代码克隆检测领域向多语言、高泛化方向的发展,为后续研究奠定了坚实的实验基础。
以上内容由遇见数据集搜集并总结生成



