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”, 线性方程组求解
   333   334   335   336   337   338   339   340   341   342   343