five

Classes and Metrics (CaM)

收藏
github2024-05-22 更新2024-05-31 收录
下载链接:
https://github.com/yegor256/cam
下载链接
链接失效反馈
官方服务:
资源简介:
这是一个包含来自公共开源GitHub仓库的Java类及其相关指标的数据集。数据集包含了532,394个Java类,来自1000个GitHub仓库,计算了包括代码行数、复杂度、维护性指数等48种指标。

This dataset comprises Java classes and their associated metrics sourced from publicly available open-source GitHub repositories. It includes 532,394 Java classes from 1,000 GitHub repositories, with 48 metrics calculated, such as lines of code, complexity, and maintainability index.
创建时间:
2021-05-28
原始信息汇总

数据集概述

数据集名称

Classes and Metrics (CaM)

数据集内容

  • 数据类型: 开放源代码Java类及其相关度量指标。
  • 数据规模: 包含来自1000个GitHub仓库的532,394个Java类。
  • 度量指标: 共有48种度量指标,包括代码行数、NCSS、循环复杂度、认知复杂度、Halstead指标、维护性指数、属性和方法数量等。

数据集版本

  • 最新版本: cam-2024-03-02.zip,大小为2.22Gb。
  • 历史版本:
    • cam-2023-03-02.zip (2.22Gb): 1000 repos, 48 metrics, 532K classes
    • cam-2023-10-22.zip (2.19Gb): 1000 repos, 33 metrics, 863K classes
    • cam-2023-10-11.zip (3Gb): 959 repos, 29 metrics, 840K classes
    • cam-2021-08-04.zip (692Mb): 1000 repos, 15 metrics
    • cam-2021-07-08.zip (387Mb): 1000 repos, 11 metrics

数据集使用

  • 使用目的: 供研究使用,确保实验的可重复性。
  • 版本引用: 每个版本固定,引用特定版本以避免歧义。

数据集构建

  • 构建工具: Docker
  • 构建命令: 使用Docker运行特定命令,具体参数包括GitHub仓库数量和个人访问令牌。
  • 构建环境要求: 至少32Gb的交换内存和512Gb的磁盘空间,建议多CPU以充分利用并行处理。

数据集贡献

  • 贡献方式: 通过添加新度量指标。
  • 贡献步骤: 包括分叉仓库、添加新度量文件、编写测试、运行测试套件并提交拉取请求。

数据集分析

  • 分析方法: 使用make命令进行本地分析,支持单个仓库或整个数据集的分析。

数据集更新

  • 更新流程: 在AWS上创建新服务器,安装Docker,配置环境,然后运行Docker命令以生成新版本的数据集。
搜集汇总
数据集介绍
main_image_url
构建方式
Classes and Metrics (CaM) 数据集的构建基于从GitHub上选取的1000个开源Java仓库,涵盖了532,394个Java类。构建过程通过自动化脚本实现,这些脚本定期运行以生成新版本的数据集。每个版本都包含48种不同的代码度量,如代码行数、NCSS、圈复杂度和认知复杂度等。构建过程高度依赖Docker容器,确保在不同环境中的一致性和可重复性。此外,构建过程支持增量更新,允许在失败后从断点继续,从而提高了效率和可靠性。
特点
CaM数据集的显著特点在于其广泛性和多样性。它不仅涵盖了大量的Java类和仓库,还包含了多种代码度量,从基本的代码行数到复杂的认知复杂度,全面反映了代码的质量和结构特征。此外,每个版本的数据集都经过严格的质量控制,确保数据的准确性和一致性。数据集的版本化管理也使得研究结果的可重复性得到了保障。
使用方法
使用CaM数据集时,用户可以通过下载最新版本的ZIP文件或通过Docker命令自行构建数据集。数据集的结构清晰,便于用户提取和分析所需的度量数据。用户还可以通过添加自定义度量脚本,扩展数据集的功能。为了确保数据集的正确使用,建议用户在分析前详细阅读相关文档,并遵循提供的使用指南。此外,数据集的构建和使用过程都支持Docker容器化,简化了环境配置和部署的复杂性。
背景与挑战
背景概述
Classes and Metrics (CaM) 数据集由Yegor Bugayenko创建,旨在为开源Java类提供详尽的度量数据。该数据集自2021年起持续更新,涵盖了从1000个GitHub仓库中提取的532,394个Java类,并计算了48种不同的度量标准,包括代码行数、圈复杂度、认知复杂度等。这些度量数据不仅有助于研究人员深入分析Java代码的质量和复杂性,还为实验的可重复性提供了保障。CaM数据集的发布,极大地推动了软件工程领域对代码质量评估和复杂性分析的研究进展。
当前挑战
CaM数据集在构建过程中面临诸多挑战。首先,从GitHub上获取和处理大量代码库需要强大的计算资源和高效的并行处理能力。其次,计算多种复杂的度量标准,如圈复杂度和认知复杂度,要求精确的算法实现和高效的计算方法。此外,确保数据集的更新和版本控制,以维持实验的可重复性,也是一个持续的挑战。最后,随着Java语言和开发实践的不断演进,如何持续更新和扩展数据集以反映最新的编程实践和标准,也是一个重要的研究方向。
常用场景
经典使用场景
在软件工程领域,Classes and Metrics (CaM) 数据集的经典使用场景主要集中在代码质量评估和软件度量分析。该数据集收集了来自1000个GitHub仓库的532,394个Java类,并计算了48种不同的代码度量,如代码行数、圈复杂度、认知复杂度等。研究者可以利用这些数据进行代码质量的定量分析,识别潜在的代码缺陷,优化软件维护策略,以及评估不同代码度量对软件质量的影响。
实际应用
在实际应用中,CaM数据集被广泛用于软件开发和维护过程中的自动化代码质量评估。开发团队可以利用该数据集生成的度量报告,识别代码中的潜在问题,优化代码结构,提高软件的可维护性和可扩展性。此外,CaM数据集还支持企业级软件质量管理系统的开发,帮助企业实现代码质量的持续监控和改进。
衍生相关工作
基于CaM数据集,研究者们开展了一系列相关工作,包括但不限于代码复杂度分析、代码质量预测模型构建、以及代码度量工具的开发与优化。例如,有研究利用CaM数据集中的圈复杂度和认知复杂度数据,开发了新的代码缺陷预测模型,显著提高了缺陷检测的准确率。此外,CaM数据集还激发了关于代码度量标准化的讨论,推动了行业内代码质量评估方法的统一和改进。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作