Page 325 - 《软件学报》2025年第8期
P. 325
3748 软件学报 2025 年第 36 卷第 8 期
随后, 本文作者人工分析了每一篇文献的标题与摘要, 并阅读引言部分的内容. 在此基础上, 应用纳入排除规
则进行人工筛选, 保留了 47 篇文章. 具体的纳入规则包括: 1) 文献提出了一种注释生成方法且包含人工评价环节,
从一些维度对注释质量进行了人工打分; 2) 文献与代码注释质量问题相关且包含对注释质量的具体评价方法, 自
动评价或人工评价皆可. 具体的排除规则包括: 1) 文献不是英文或中文撰写; 2) 文献少于 4 页; 3) 文献无法通过数
字方式获取; 4) 文献使用的注释质量评价方法是基于深度学习的方法. 这里排除基于深度学习的注释质量评价方
法主要是出于如下考虑: 这类方法需要人工标注数据集训练模型以评价注释, 成本过高且训练出的模型不一定适
用于所有注释 [39] , 例如一些文献使用深度学习的方法检测注释与代码的不一致性, 更适合单独对其展开研究.
最后, 本文进一步检查保留下的文献的参考文献, 同样应用纳入排除规则进行拓展分析, 得到了一个更完善的
包含 59 篇论文的论文集 (截至 2023 年 6 月), 形成了表 1 所示的相关文献概览. 这些论文中发表于 CCF A 类或 B
类会议或期刊的论文共有 37 篇, 占比约 62.7%. 这表明代码注释质量评价目前在国际主流会议和期刊上处于较为
活跃的状态, 是热门的研究领域.
表 1 相关文献情况概览
研究问题 研究内容 相关文献数 CCF A或B类
从哪些维度来评价代码注释的质量? 评价维度 35 24
有哪些可量化的注释质量评价方法? 评价方法 24 13
2.2 开放数据集注释的选取
通过对上述文献进行总结, 本文从现有工作中选取了 3 个当前主流的开放注释数据集 [30] 进行注释质量分析.
Shi 等人 [30] 的研究发现这 3 个数据集均存在大量比例由于不充分的预处理而引入的噪音注释, 因此本文采用了
Shi 等人提供的去除噪音后的数据集版本, 具体的情况如表 2 所示. 其中, TLC 数据集 [40] 与 Funcom 数据集 [41] 的样
本来源于若干 Java 开源项目的 Java 方法和相应的 Javadoc 的首句注释. CSN 数据集 [42] 来自 GitHub 上的开源项目
并包含了 6 种编程语言代码的注释, 本文选取了该数据集的 Java 语言部分进行研究.
表 2 开放数据集情况
参数 TLC CSN Funcom
训练集样本数 53 597 323 226 1 184 438
验证集样本数 7 562 8 849 62 702
测试集样本数 7 584 19 319 69 392
样本总数 68 743 351 394 1 316 532
本文在选取数据集时主要考虑了以下理由: 1) 主流性: Java 是广泛使用的编程语言之一, 当前注释生成工作
通常以 Java 语言为研究对象, 在表 1 所示的 35 篇与注释生成方法相关的文献中, 共有 33 篇在 Java 数据集或
Java 软件项目上开展实验并进行人工评价; 2) 代表性: 这 3 个数据集被当前主流的注释生成工作广泛采用, 有利
于对比分析; 3) 兼容性: 本文使用的评价指标都是独立于编程语言的, Java 语言数据集上的研究结果在一定程度
上具有推广性.
2.3 面向代码注释生成任务的注释质量评价方案
如前所述, 当前代码注释生成任务主要依靠 BLEU 等指标评价生成注释和人工参考注释的相似性, 是一种间
接的评价方式. 为了促进代码注释生成技术的研究, 本文拟在充分调研现有代码注释质量评价方法的基础上, 总结
提出一套量化的可直接应用于人工注释和生成注释的质量评价指标, 并基于这些指标对现有代码注释开放数据集、
典型方法生成的注释以及 ChatGPT 生成的注释进行质量分析, 以更好地揭示出当前注释生成和注释质量的实际
情况. 为此, 本文采取的面向代码注释生成任务的注释质量评价方案设计如下.
首先, 为了评价和分析开放数据集的代码注释质量, 本文对以上 3 个主流开放数据集中的人工注释进行了评
价和分析. 针对评价指标明显异常的样本, 开展人工抽样与案例分析, 以检验所选取的注释质量评价指标是否有助

