Page 326 - 《软件学报》2025年第8期
P. 326

赵衔麟 等: 面向代码注释生成任务的注释质量评价研究                                                      3749


                 于揭示出注释质量存在的问题.
                    其次, 为了评价和分析生成注释的质量, 本文选择了一种代表性的方法——基于                          CodeT5  预训练模型   [43] 的代
                 码注释生成方法      (https://huggingface.co/Salesforce/codet5-base-multi-sum). CodeT5  模型在  CSN  数据集的训练集上
                 进行过预训练, 为避免预训练过程的数据泄露问题, 本文利用该方法为                     CSN  测试集的   19 319  个样本生成了代码注
                 释, 并进一步评价和分析这些生成注释以及它们相应的人工参考注释的质量差异.
                    在上述生成注释的质量分析与评价过程中, 低                BLEU  值的样本暗示着其所生成的注释与人工参考注释不一
                 致. 对这类样本的注释进行分析有助于发现目前注释生成的瓶颈, 例如究竟是人工参考注释本身就存在质量问题?
                 还是这类注释本身更难以生成? 这类注释具有何种特点? 为此, 本文还对低                      BLEU  集的人工参考注释进行了评价
                 和分析.
                    最后, 针对近期研究反映的大语言模型             ChatGPT  生成的注释   BLEU  值较低的问题, 本文使用       ChatGPT  提供
                 的  API (https://platform.openai.com/docs/guides/gpt/chat-completions-api) 为  CSN  测试集中随机采样的  2 000  段代码
                 生成了注释, 并与     CodeT5  模型生成的注释质量对比分析, 以展示不同模型生成注释的实际情况. 同时, 通过案例
                 展示了   ChatGPT  生成的注释与其人工参考注释的差异. 总结而言, 本文在上述部分的实验数据集合名称与定义如
                 表  3  所示.

                                                    表 3 实验数据集简介

                       集合名称                                    描述                              样本数量
                      参考注释集                        CSN测试集的代码注释 (人工参考注释)                         19 319
                    CodeT5生成注释集                   使用CodeT5为CSN测试集生成的代码注释                        19 319
                       低BLEU集          CodeT5生成注释集中BLEU值在中位数以下的注释所对应的人工参考注释                      9 655
                   ChatGPT生成注释集           使用ChatGPT为CSN测试集中随机采样的2 000段代码生成的注释                    2 000

                 3   代码注释质量的评价维度与方法

                    现有工作从不同的维度对注释质量进行了评价, 在部分维度上涌现出了一些可量化的注释质量评价方法. 本节
                 对当前注释质量评价工作进行总结, 并据此设计了一套面向代码注释生成任务的、涵盖多维度的注释质量评价指标.

                 3.1   现有的评价维度与评价方法
                    表  4  总结了目前代码注释生成研究在评价注释时常用的维度                  [12,44–77] . 由表  4  可知, 在评价注释时, 自然性、准
                 确性、有用性受到的关注度较高. 下面具体介绍每一个评价维度上的典型相关工作.

                                              表 4 注释评价维度及相关文献统计

                 评价维度                    含义                        使用该维度评价注释的文献汇总                文献数量
                  准确性/  注释的信息是准确的, 能反映代码的意图和相关细节
                  相关性                                         [44,45,47–49,51,53,54,56,58,59,63,65–70,72,77]  20
                        注释不能缺失重要的信息, 不能只包含少数事实, 影
                  完整性                                                [45,48,58,61,66,68–72,77]     11
                        响开发者对代码的理解
                  简洁性 注释需要简洁, 不应当包含不必要或不相关的信息                          [45,50,61,66,68–71,77]       9
                  有用性/ 注释必须包含足够量的信息来帮助开发者理解该代
                  信息量 码的功能、目的、使用方法等                           [12,45,46,49,50,52,53,55–57,60,62–65,67,73–76]  20
                  自然性/  注释需要语法正确, 文字流畅, 易于开发者理解                      [12,46–49,52–65,67,71–76]     26
                  流畅性

                 3.1.1    准确性/相关性
                    准确性/相关性是指注释是否准确, 是否能够反映代码的意图和相关细节. 为了评价注释的准确性/相关性, 目
                 前工作有两种途径: (1) 检测注释与代码是否存在不一致, 若不一致, 则注释存在不准确                       [78–80] . (2) 计算注释与代码
                 在词汇上的相似度. 现有研究表明注释与代码词汇上的相似度与注释的准确性/相关性存在很强的关联性. 通过词
   321   322   323   324   325   326   327   328   329   330   331