[Paper] SACS:使用半自动生成方法的代码异味数据集

发布: (2026年2月17日 GMT+8 12:15)
6 分钟阅读
原文: arXiv

Source: arXiv - 2602.15342v1

Overview

本文介绍了 SACS,一个公开可用的代码异味示例数据集,该数据集通过自动化与人工审查的巧妙结合生成。通过解决高质量标注数据长期短缺的问题,作者旨在加速机器学习在自动检测和重构问题代码模式方面的研究。

关键贡献

  • 半自动生成管道,首先使用基于规则的启发式方法创建候选的有味代码片段,然后对其进行划分,以实现自动接受或手动检查。
  • 结构化审查过程:明确的标注指南和自定义工具,将人工精力集中在最模糊的样本上,提高标签可靠性。
  • SACS 数据集:为三种经典代码味道——长方法、庞大类和特征嫉妒——各提供超过 10 k 标注实例,且在开源许可证下发布。
  • 基准基线:作者提供了初步的机器学习实验,展示了该数据集在训练和评估代码味道检测器方面的实用性。

方法论

  1. 基于规则的候选提取 – 作者将众所周知的异味标准(例如,方法长度 > X 行,类规模 > Y 行,方法访问大量外部类成员)编码到静态分析脚本中,以扫描大型开源代码库。
  2. 度量驱动的分组 – 对每个候选项使用多个正交度量进行评分(例如,圈复杂度、访问的字段数量、内聚度分数)。明显满足或违反阈值的样本会自动归入“干净”或“有异味”组。
  3. 人工审查队列 – 模糊情况进入第二个桶。受训审查员使用专门构建的标注 UI,依据详细的评分标准(什么算作“特征嫉妒”、边缘情况处理等),确认或纠正标签。
  4. 质量保证 – 测量评审者间的一致性,对一致性低的项目重新审查。最终数据集随后被划分为训练/验证/测试折,用于后续的机器学习工作。

结果与发现

  • 数据集规模与平衡: 每种异味类别包含约 10 k+ 样本,且有味代码与干净代码的比例大约为 1:1,提供了一个平衡良好的基准。
  • 标签可靠性: 手动审查获得了 Cohen’s κ 为 0.82,表明标注者之间达成了高度一致。
  • 基线机器学习性能: 在 SACS 上训练的简单分类器(Random Forest、SVM)在三种异味上取得了 0.78–0.85 的 F1 分数,优于在先前可用的全自动数据集上训练的模型。
  • 效率提升: 与全手动标注相比,半自动流水线将人工工作量减少约 70 %,同时保持了高标签质量。

实际意义

  • 更快的模型原型制作 – 开发者现在可以在大型、经过审查的数据集上训练代码异味检测模型,而无需花费数周时间进行数据收集。
  • 工具集成 – IDE 插件或 CI 流水线可以采用在 SACS 上训练的模型,在开发周期的早期标记 Long Method、Large Class 或 Feature Envy 等异味,从而降低技术债务。
  • 基准测试与可复现性 – 研究人员和业界团队拥有了一个共同的基准,用于比较检测算法,促进自动重构领域更透明的进展。
  • 可扩展性 – 该半自动框架可以适配其他异味(例如 God Class、Data Clumps),帮助组织生成反映其代码库特征的自定义数据集。

局限性与未来工作

  • 气味范围 – 当前版本仅覆盖了众多已记录气味中的三种;将其扩展到更广泛的分类仍是一个未完成的任务。
  • 语言偏差 – 所有样本均来自 Java 项目;跨语言的适用性(例如 Python、C#)需要验证。
  • 对静态分析的依赖 – 基于规则的候选生成可能会遗漏需要动态分析的上下文相关气味。
  • 未来方向 包括:
    1. 引入运行时指标。
    2. 通过主动学习自动化评审量表。
    3. 评估 SACS 训练模型在真实开发工作流中的影响。

作者

  • Hanyu Zhang
  • Tomoji Kishi

论文信息

  • arXiv ID: 2602.15342v1
  • 分类: cs.SE
  • 出版日期: 2026年2月17日
  • PDF: 下载 PDF
0 浏览
Back to Blog

相关文章

阅读更多 »