Page 338 - 《软件学报》2025年第8期
P. 338
赵衔麟 等: 面向代码注释生成任务的注释质量评价研究 3761
文的人工检查结果, 此种注释可能是数据集中的噪音, 应加以过滤.
5.5 发 现
本节分析了典型代码注释生成方法 CodeT5 生成注释的质量, 结果表明: 自动生成的注释普遍在词汇和语义
上与代码更接近, 更为简短, 较难生成表达代码高层意图或传递额外信息的注释, 应进一步提升代码注释生成方
法. 生成注释的 BLEU 值较低, 除人工参考注释的生成难度较大以外, 还存在大量的参考注释本身质量不佳, 应该
过滤或改进此种注释. 具体研究发现包括:
相关性: 自动生成的注释在词汇分布和语义上都倾向于与代码更为相似. 取得较低 BLEU 值的一个重要原因
是人工参考注释与代码相似度更低, 这可能有两种情况: 一种情况是人工参考注释描述的是代码的高层逻辑和意
图, 现有模型难以生成, 一种是人工参考注释本身与代码没有关联, 属于噪音.
简洁性: 相比于数据集中的人工参考注释, 自动生成的注释长度更短、更简洁. 如果要生成的参考注释本身很
长、内容较多, 生成的注释可能难以满足需求, 从而取得较低的 BLEU 值.
自然性: 相比于人工参考注释, 生成的注释更加简单易读, 在可读性指标上更不容易出现极端值, 语句结构通
常也更简单, 更不易产生语法问题. 生成注释中取得较低 BLEU 值的样本, 其参考注释包含的语法错误 (包括句子
成分、用词等方面) 可能更多. 这种情况下, 参考注释本身存在质量问题, 用 BLEU 值评价未必合适.
有用性: 自动注释生成方法倾向于生成与方法签名更接近的注释, 而不会包含较多的补充信息, 如果参考注释
含更多的补充信息, 则会给注释生成增加难度, 难以生成符合要求的高 BLEU 值注释.
6 ChatGPT 生成注释的质量分析
近期, 以 ChatGPT 为代表的大语言模型在软件工程领域获得了广泛关注. 研究显示 [38] , ChatGPT 生成的注释
在 BLEU, METEOR, ROUGE-L 指标上的表现都显著劣于 CodeT5 产生的注释. 然而根据前文的分析, 仅仅依据这
些相似性指标不足以反映出生成注释实际质量的优劣. 为了更具体地分析大语言模型产生的代码注释的质量, 本
节同样将本文选取的一些注释评价指标应用于分析 ChatGPT 生成的注释, 并将其与 CodeT5 生成的注释及人工参
考注释进行对比, 以期能够更好地展现当前 ChatGPT 生成注释的实际情况.
6.1 度量方式和结果
本节使用 Sun 等人 [38] 提出的 prompt (“Please generate a short comment in one sentence for the following
function:<code>”) 为 CSN 测试集中随机抽取的 2 000 段代码生成注释, 并将其生成的注释和 CodeT5 生成的注释
质量进行评价和对比分析.
由于 ChatGPT 经过了大规模文本和代码数据的训练, 具有很强的理解代码、生成自然语言的能力, 因此本文
主要研究 ChatGPT 生成的注释是否具有更大的信息量 (有用性)、更符合开发者的需求. 具体来说, 本节使用了有
用性指标 mesia、简洁性指标 comment_len、自然性指标 flesch_ease, 并通过具体的案例, 分析注释的内容是否更
丰富, 而且是正确、有帮助的.
图 12 展示了 ChatGPT 生成的注释和 CodeT5 生成的注释在有用性指标 mesia 上的评价结果的分布情况.
图 13 展示了两者生成注释的整体长度的分布. 可以看到, ChatGPT 产生的注释和 CodeT5 产生的注释存在较大差
异. 首先, ChatGPT 生成的注释更多分布在 mesia 较高的区域, 说明其生成注释相对于方法签名补充了更多的信息;
其次, ChatGPT 生成的注释更长. CodeT5 生成注释的长度均值为 6.53, 而 ChatGPT 生成注释的长度均值达到了
21.81. 由此可见, ChatGPT 产生的注释含有更丰富的内容.
除注释长度外, 本文还计算了二者生成的注释在自然性指标 flesch_ease 上的表现, 其结果也存在明显差异, 两
者的均值分别为 71.16 和 52.02. 这说明相比于 CodeT5 生成的简短易读的注释, ChatGPT 产生注释的阅读难度略大.
图 14 分别展示了两个 ChatGPT 生成的注释与 CodeT5 生成注释的案例. 与人工参考注释对比, 可以更好地观
察 ChatGPT 生成注释的特点. 首先, 可以看出 ChatGPT 生成注释的长度显著大于另外二者, 与人工参考注释的差
异很大. 具体来看, 在例 1 中, 人工参考注释与 CodeT5 生成的注释主要强调了“back substitution”, 线性方程组求解

