Page 335 - 《软件学报》2025年第8期
P. 335
3758 软件学报 2025 年第 36 卷第 8 期
3) conciseness 指标过低的注释, 此类注释可能长度过短或相应的代码过长. 4) conciseness 过高, 较为冗长的注释.
自然性: 现有数据集普遍存在较难阅读的注释, 该类注释通常包含由多个单词拼接而成的词语, 由此降低了注
释的可读性. 此外, 现有数据集预处理不充分, 存在一些实际内容为代码的注释, 此类噪音应该加以过滤.
有用性: coefficient 指标和 mesia 指标有助于评价注释的有用性. 当前数据集存在部分注释缺少补充信息, 对
开发者帮助不大. 此外, 当前数据集还存在 mesia 值过高的注释, 可能是噪音, 需要加以过滤.
例1 注释:calculate number of security servers
public static int calculateSecurityServerCount(int externalsessioncount) {…} coefficient: 0.6
mesia: 1.9267
例2 注释:show the consumer context menu if a consumer is selected.
private void showContextMenu (final MouseEvent event) { coefficient: 0.3
if (consumers.getSelectedIndex( ) > -_NUM) {} mesia: 3.9541
}
例3 注释:replacement function for System.currentTimeMillis
public static long nanoTime() { coefficient: 0
wasTimeAccessed= _BOOL; mesia: 7.7988
return currentTime* _NUM;
}
例4 注释:too many inout parameters
public static void calculatePendingGroupDiffs(MitroRequestContext context, Collection<? coefficient: 0
extends PendingGroup> pendingGroupsList, DBGroup org, Map<String,DBGroup> existingGroups,
mesia: 9.7557
Map<String,GroupDiff> diffs, Map<String,MemberList> pendingGroupMap, String scope)
throws MitroServletException, SQLException{…}
图 7 代码注释有用性分析的若干案例
5 典型方法生成注释的质量分析
本节使用第 3.2 节选取的评价指标对典型注释生成方法 CodeT5 生成的代码注释 (后文简称生成注释) 的质量
进行评价和分析. 下面详细介绍各个维度上的评价和分析结果.
5.1 相关性
图 8 展示了生成注释、人工参考注释以及低 BLEU 集中的人工参考注释在 lexical_tfidf 和 lexical_w2v 两项
指标上取值的分布情况. 可以看到, 随 lexical_tfidf 值的升高, 人工参考注释的比例不断下降, 然而 CodeT5 生成注
释的比例不是持续下降, 而是先逐步上升后缓慢下降.
32
Generate Generate
25 Dataset 28 Dataset
Low-BLEU 24 Low-BLEU
20
Probability (%) 15 Probability (%) 20
16
12
10
8
5
4
0 0
0 0.2 0.4 0.6 0.8 1.0 −1.00−0.75−0.50−0.25 0 0.25 0.50 0.75 1.00
lexical_tfidf lexical_w2v
图 8 3 个注释集合在 lexical_tfidf、lexical_w2v 上的分布
表 11 展示了 3 个注释集合在两项指标上的均值和中位数. 可以看到, 生成注释在 lexical_tfidf 指标的均值和
中位数上显著高于数据集中的人工参考注释, 这表明生成注释倾向于与代码有更多词汇上的重合. 进一步可以看
到, 低 BLEU 集的人工注释在 lexical_tfidf 上的均值和中位数明显更低. 这说明如果参考注释与代码的词汇重合较
少, 那么这样的注释更难被生成, 导致取得较低的 BLEU 值. 在 lexical_w2v 指标的分析也展现出与 lexical_tfidf 类

