DACOS
收藏arXiv2023-03-16 更新2024-06-21 收录
下载链接:
https://doi.org/10.5281/zenodo.7570428
下载链接
链接失效反馈官方服务:
资源简介:
DACOS是由达尔豪斯大学哈利法克斯分校创建的手动标注代码异味数据集,包含10,267个针对5,192个代码片段的标注。该数据集专注于三种代码异味:多面抽象、复杂方法和长参数列表,通过两阶段过程创建,首先识别潜在主观性的代码片段,然后收集这些片段的标注。DACOS旨在帮助研究人员构建与上下文相关的机器学习模型,以检测代码异味,解决代码异味检测中的主观性问题。
DACOS is a manually annotated code smell dataset developed by Dalhousie University's Halifax campus, containing 10,267 annotations for 5,192 code snippets. This dataset focuses on three types of code smells: Multi-faceted Abstraction (Blob Class), Complex Method, and Long Parameter List. It was created through a two-stage process: first identifying code snippets with potential subjectivity, then collecting annotations for these snippets. DACOS aims to assist researchers in building context-aware machine learning models for code smell detection, addressing the subjectivity challenge inherent in code smell detection tasks.
提供机构:
达尔豪斯大学哈利法克斯分校
创建时间:
2023-03-16
搜集汇总
数据集介绍

构建方式
在软件工程领域,代码异味检测的机器学习方法依赖于大规模人工标注数据集。DACOS数据集的构建采用两阶段策略,旨在精准捕捉代码异味的主观性。第一阶段通过展示未经筛选的代码片段给标注者,基于反馈计算环复杂度、参数数量等质量指标的阈值,以界定潜在主观性片段的范围。第二阶段利用所得阈值过滤代码库,仅向标注者呈现指标值介于高低阈值之间的片段,并通过TAGMAN网络应用系统化收集双盲标注。该流程从高质量Java仓库中提取代码,经CodeSplitJava分割为独立方法或类,最终形成包含5,192个片段和10,267条标注的核心数据集。
特点
DACOS数据集的核心特征在于其专注于代码异味的主观性维度,通过精心设计的阈值过滤机制,有效剔除了明确无异味或明确有异味的确定性片段,从而集中资源标注那些因上下文差异可能导致分类分歧的潜在主观性代码。数据集涵盖多重抽象、复杂方法和长参数列表三种不同粒度的代码异味,提供了大规模人工标注样本。其延伸版本DACOSX进一步补充了超过二十万个确定性片段的元数据,增强了数据集的覆盖广度。这种主客观分离的结构设计,显著提升了数据集在训练上下文感知机器学习模型时的信息密度与效用。
使用方法
该数据集主要服务于代码异味检测的机器学习研究,可作为训练和验证分类模型的基准数据。研究者可利用DACOS中人工标注的主观性片段,开发能够理解代码上下文语义的检测算法。DACOSX中的确定性片段则可用于模型预训练或作为负样本扩充。数据集提供的TAGMAN标注工具及其开源代码,可被社区复用于其他代码标注任务,如漏洞识别或标识符质量评估。在使用时,建议遵循数据集中标注协议,注意其基于Java语言的局限性,并可依据研究需求配置阈值过滤机制,以适配不同的编程语言或异味类型。
背景与挑战
背景概述
在软件工程领域,代码异味作为设计缺陷的典型征兆,长期影响着软件的可维护性、开发效率与系统可靠性。传统检测工具依赖静态指标与启发式规则,难以应对代码异味固有的主观性挑战。为此,Dalhousie大学的研究团队于2023年推出了DACOS数据集,旨在通过大规模人工标注,为机器学习驱动的异味检测提供高质量训练与基准资源。该数据集聚焦于多面体抽象、复杂方法及长参数列表三类异味,涵盖5,192个代码片段与10,267条标注,其构建过程融合了指标阈值筛选与两阶段标注策略,显著提升了数据集中主观性样本的密度与代表性。
当前挑战
DACOS数据集致力于解决代码异味检测中因主观性导致的分类模糊问题,其核心挑战在于如何精准捕获语境依赖的异味判定边界。在构建过程中,研究团队面临多重困难:首先,需从海量开源仓库中筛选出高质量Java项目,并剔除明确无异味或明显异味的片段,以聚焦于主观性样本;其次,人工标注环节依赖大量具备专业知识的志愿者,其标注一致性与可靠性需通过多轮标注与阈值校准来保障;此外,数据集的扩展性受限于异味类型的覆盖范围与编程语言多样性,未来需在样本规模、异味种类及多语言支持方面持续优化。
常用场景
经典使用场景
在软件工程领域,代码异味检测是提升软件质量的关键环节。DACOS数据集通过精心筛选主观性代码片段,为机器学习模型提供了丰富的训练与基准测试资源。其核心应用场景在于支持基于机器学习的代码异味检测方法,特别是针对多面抽象、复杂方法和长参数列表这三种异味的识别。研究者可利用该数据集构建上下文感知的检测模型,以应对传统基于规则的工具在主观性异味识别上的局限性。
实际应用
在实际软件开发中,DACOS数据集可被集成到持续集成与代码审查工具中,辅助开发团队自动化检测潜在的设计缺陷。例如,企业可利用其训练定制化模型,针对特定项目语境识别复杂方法或多面抽象,从而提前优化代码结构,降低维护成本。此外,数据集衍生的TAGMAN工具也能扩展用于其他代码标注任务,如漏洞检测或标识符质量评估。
衍生相关工作
DACOS数据集推动了多项经典研究,例如基于深度学习的异味检测模型开发,以及代码异味与开发团队效率的关联性分析。它常与LANDFILL、MLCQ等现有数据集结合使用,以弥补后者在主观性片段覆盖上的不足。相关研究进一步探索了异味检测的迁移学习策略,并利用DACOSX扩展数据集验证模型在明确异味与良性代码上的泛化能力。
以上内容由遇见数据集搜集并总结生成



