JEMMA
收藏github2022-12-12 更新2024-05-31 收录
下载链接:
https://github.com/giganticode/jemma
下载链接
链接失效反馈官方服务:
资源简介:
JEMMA是一个可扩展的Java数据集,用于多种ML4Code应用。它主要是一个包含Java代码实体在多个粒度级别、其属性和表示的数据集。为了帮助用户无缝交互和工作,我们还为其添加了工作台功能。
JEMMA is an extensible Java dataset designed for various ML4Code applications. It primarily consists of Java code entities at multiple granularity levels, along with their attributes and representations. To facilitate seamless interaction and workflow for users, we have also integrated a workbench feature into the dataset.
创建时间:
2022-07-29
原始信息汇总
数据集概述
数据集名称
JEMMA - 一个用于多种ML4Code应用的可扩展Java数据集。
数据集内容
JEMMA数据集主要包含Java代码实体在多个粒度上的数据、属性及其表示。
数据集结构
-
JEMMA Metadata
- projects
- 列: project_id, project_path, project_name
- 链接: projects
- packages
- 列: project_id, package_id, package_path, package_name
- 链接: packages
- classes
- 列: project_id, package_id, class_id, class_path, class_name
- 链接: classes
- methods
- 列: project_id, package_id, class_id, method_id, method_name, start_line, end_line
- 链接: methods
- projects
-
JEMMA Representations
-
JEMMA Properties
- RSLK
- 名称: resource_leak
- 链接: RSLK
- NLDF
- 名称: null_dereference
- 链接: NLDF
- NMLC
- 名称: num_local_calls
- 链接: NMLC
- NMNC
- 名称: num_non_local_calls
- 链接: NMNC
- NUCC
- 名称: num_unique_callees
- 链接: NUCC
- NUPC
- 名称: num_unique_callers
- 链接: NUPC
- CMPX
- 名称: cyclomatic_complexity
- 链接: CMPX
- MXIN
- 名称: max_indent
- 链接: MXIN
- NAME
- 名称: method_name
- 链接: NAME
- NMLT
- 名称: num_literals
- 链接: NMLT
- NMOP
- 名称: num_operators
- 链接: NMOP
- NMPR
- 名称: num_parameters
- 链接: NMPR
- NMRT
- 名称: num_returns
- 链接: NMRT
- NMTK
- 名称: num_tokens
- 链接: NMTK
- NTID
- 名称: num_identifiers
- 链接: NTID
- NUID
- 名称: num_unique_identifiers
- 链接: NUID
- SLOC
- 名称: source_lines_of_code
- 链接: SLOC
- TLOC
- 名称: total_lines_of_code
- 链接: TLOC
- RSLK
-
JEMMA Callgraphs
- 链接: Callgraphs
- 列: caller_project_id, caller_class_id, caller_method_id, call_direction, callee_project_id, callee_class_id, callee_method_id
数据集使用
数据集的原始数据托管在Zenodo,可通过Workbench随时下载。Workbench提供了API调用和用例教程,以帮助用户交互和处理数据。
数据集贡献
用户可以通过提交Pull Requests来贡献新的数据。
搜集汇总
数据集介绍

构建方式
JEMMA数据集是一个面向多种机器学习代码应用的可扩展Java代码数据集,涵盖了多个粒度的Java代码实体及其属性和表示。该数据集的构建过程包括从开源Java项目中提取代码实体,并通过静态分析工具生成代码的元数据、表示和属性信息。数据集的核心部分托管在Zenodo平台上,用户可以通过JEMMA Workbench无缝访问和操作这些数据。Workbench提供了丰富的API接口,支持用户对数据集进行灵活的查询和分析。
特点
JEMMA数据集的特点在于其多粒度性和丰富的代码表示形式。数据集不仅包含了Java项目的元数据,还提供了多种代码表示方式,如原始源代码、代码标记、代码向量等。此外,数据集还包含了代码的属性信息,如资源泄漏、空指针引用、代码复杂度等,这些属性为代码分析和机器学习任务提供了丰富的特征。JEMMA还提供了调用图数据,支持代码间的调用关系分析,进一步增强了数据集的实用性。
使用方法
使用JEMMA数据集时,用户首先需要从GitHub克隆JEMMA Workbench的代码库,并通过pip安装相关依赖。随后,用户需要在Zenodo平台上注册并生成API密钥,用于下载数据集。下载完成后,用户可以通过Workbench提供的API接口进行数据查询和分析。Workbench支持对项目、类、方法等不同粒度的代码实体进行查询,并提供了丰富的工具函数,如获取代码属性、生成代码表示等。通过这些工具,用户可以轻松地将JEMMA数据集应用于代码分析、缺陷检测、代码推荐等多种机器学习任务中。
背景与挑战
背景概述
JEMMA(Java Extensible Many ML4Code Applications)数据集是一个专注于Java代码实体的多粒度数据集,涵盖了代码实体、其属性及多种表示形式。该数据集由Giganticode团队创建,旨在为机器学习在代码分析领域的应用提供丰富的数据支持。JEMMA不仅包含代码的原始形式,还提供了多种代码表示方法,如code2vec、code2seq等,以及代码的属性信息,如资源泄漏、空指针引用等。该数据集的构建为代码理解、缺陷检测、代码生成等任务提供了重要的数据基础,推动了机器学习在软件工程领域的应用。
当前挑战
JEMMA数据集在构建和应用过程中面临多重挑战。首先,代码的多粒度表示要求数据集能够捕捉从项目到方法的不同层次信息,这对数据的组织和管理提出了较高要求。其次,代码属性的提取和标注需要精确的工具和方法,以确保数据的准确性和一致性。此外,代码的复杂性和多样性使得数据集的构建过程充满挑战,尤其是在处理大规模代码库时,如何高效地提取和存储数据成为关键问题。最后,数据集的扩展性和可维护性也是重要挑战,如何在保持数据质量的同时,支持不断增长的代码库和新的分析需求,是JEMMA未来发展的核心问题。
常用场景
经典使用场景
JEMMA数据集在代码分析与机器学习领域具有广泛的应用,尤其是在Java代码的多粒度实体分析中。通过提供项目、包、类和方法的多层次数据,JEMMA能够支持代码克隆检测、代码质量评估以及代码推荐系统的开发。其丰富的元数据和表示形式(如code2vec、code2seq等)为研究人员提供了多样化的工具,用于深入挖掘代码的结构与语义信息。
解决学术问题
JEMMA数据集解决了代码分析中的多个关键问题,尤其是在代码表示与理解方面。通过提供多种代码表示形式(如代码标记、特征图等),JEMMA帮助研究人员克服了传统代码分析中语义信息不足的难题。此外,其丰富的属性数据(如资源泄漏、空指针引用等)为代码缺陷检测和代码复杂度分析提供了强有力的支持,推动了代码质量评估领域的研究进展。
衍生相关工作
JEMMA数据集催生了一系列经典研究工作,尤其是在代码表示学习与代码质量分析领域。基于JEMMA的code2vec和code2seq表示形式,研究人员开发了多种代码嵌入模型,用于代码克隆检测和代码推荐。此外,JEMMA的属性数据被广泛应用于代码缺陷预测和代码复杂度分析,推动了软件工程领域的自动化工具开发与优化。
以上内容由遇见数据集搜集并总结生成



