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

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


                 and  applies  a  set  of  multi-dimensional  metrics  to  directly  evaluate  the  quality  of  code  comments  in  mainstream  open  datasets,  comments
                 generated  by  traditional  methods,  and  comments  generated  by  ChatGPT.  The  study  reveals  the  following  findings.  1)  The  quality  of  code
                 comments  in  mainstream  open  datasets  needs  improvement,  with  issues  such  as  inaccuracy,  poor  readability,  excessive  simplicity,  and  a
                 lack  of  useful  information.  2)  Comments  generated  by  traditional  methods  are  more  lexically  and  semantically  similar  to  the  code  but  lack
                 information  that  is  more  useful  to  developers,  such  as  high-level  intentions  of  the  code.  3)  One  important  reason  for  the  low  BLEU  scores
                 of  generated  comments  is  the  large  number  of  poor-quality  reference  comments  in  datasets,  which  lack  relevance  with  the  code  or  exhibit
                 poor  naturalness.  These  kinds  of  reference  comments  should  be  filtered  or  improved.  4)  Comments  generated  by  LLMs  like  ChatGPT  are
                 rich  in  content  but  tend  to  be  lengthy.  Their  quality  evaluation  needs  to  be  tailored  to  developer  intentions  and  specific  scenarios.  Based
                 on these findings, this study provides several suggestions for future research in code comment generation and comment quality evaluation.
                 Key words:  code comment; comment quality; comment evaluation; comment dataset; comment generation
                    代码注释是提高软件可理解性和可维护性的重要手段                    [1–4] . 随着现代软件规模和复杂性的持续增长以及软件
                 的持续演化, 开发者在软件开发过程中普遍会耗费大量的时间用于阅读和理解代码                           [5] . 研究表明, 高质量的代码注
                 释能够显著提高开发者阅读和理解代码的效率                [1,2] , 降低软件开发过程中代码维护的代价         [3,4] . 因此, 近年来学术界
                 和产业界对代码注释自动生成任务进行了大量研究                  [6–18] , 特别是一些基于深度学习的方法      [12–18] 在开放数据集  [19] 上
                 获得了较好的效果.
                    虽然代码注释生成方法已经取得了很大进展, 但研究者们对目前的注释质量评价方法                             [20–22] 提出了广泛质疑.
                 一方面, 当前的注释生成工作大多沿用了自然语言翻译任务的评价方法                           [19] , 通过  BLEU  [23] 、METEOR  [24] 、
                 ROUGE [25] 、CIDEr [26] 等指标来对生成注释的质量进行评价. 这些指标只能反映生成的注释与开放数据集中人工
                 参考注释的相似性, 并不能直接地反映所生成注释的实际质量                    [20,27–29] . 典型地, Stapleton  等人  [27] 招募  45  名参与者
                 根据不同注释, 完成代码理解和代码编写任务, 发现其表现与                   BLEU、ROUGE   等指标的高低没有显著关系; Roy
                 等人  [28] 发现  BLEU  等相似性指标少于   2  点的提升不能确保生成注释质量的提升, 也不能可靠地反映人类的评价.
                 另一方面, 缺乏客观有效的对数据集中人工注释质量进行评价的方法. 尽管一些工作已经对开放注释数据集中的
                 人工参考注释进行了噪音处理, 但大量实验表明人工注释的质量仍然难以保障. 由此不仅会影响注释生成模型训
                 练的效果, 还会影响生成注释评价结果的可靠性               [30] .
                    基于上述问题, 本文首先对注释质量评价相关的论文进行了收集、整理和分析, 总结归纳了现有工作在代码
                 注释质量评价上的若干维度和度量方法, 并据此设计了一套量化的注释质量评价指标, 涵盖准确性、简洁性、自
                 然性和有用性等维度, 对于生成注释和人工注释均可进行直接的质量评价. 利用这套指标, 本文对现有开放代码注
                 释数据集以及典型注释生成方法自动生成的代码注释进行了质量评价和分析. 研究发现: 1) 现有主流开放数据集
                 中的代码注释质量有待提高, 均存在不同程度的不准确、可读性差、过于简短、缺乏有用信息等问题; 2) 现有方
                 法生成的注释普遍在词汇上和语义上与代码更接近, 缺乏代码高层意图等对开发者更有用的信息; 3) 生成注释的
                 BLEU  值较低, 一个重要原因是存在大量的参考注释本身质量不佳, 譬如与代码缺乏关联、自然性较差等, 应过滤
                 或改进此种参考注释; 4) 大语言模型         ChatGPT  生成的代码注释内容丰富但较为冗长, 其质量评价需要根据开发者
                 意图与具体场景进行针对性改进. 这些发现有利于研究者们进一步改进现有代码注释数据集的质量并提升注释生
                 成方法的效果, 推动自动注释生成的实用化.
                    现有研究工作中, 代码注释质量问题已经引起了不少研究者的关注. 典型的, Hu                       等人  [20] 针对从业人员对自动
                 生成注释的看法进行了访谈调查, 总结了从业者对自动生成注释的内容、位置、评价标准等方面的期望. Wang                                 等
                 人  [31] 指出低质量的代码注释给代码理解和维护带来挑战, 其以开源项目中独立于代码变更的注释变更为媒介, 分
                 析总结了注释指南、注释检查工具和注释生成工具等对代码注释质量的影响, 帮助用户理解次优注释是如何引入
                 的. Mahmud  等人  [32] 深入分析了代码注释生成模型产生的常见错误, 总结出             6  种错误类型, 从而更细致地分析模型
                 的不足. 此外, 一些关于代码注释的研究综述            [8,9,11,33,34] 也关注了代码注释生成以及注释的质量问题, 其中, Bai 等人      [8]
                 对注释生成、注释与代码一致性、注释分类和注释质量评估这                       4  个方面进行了汇总, 其中注释生成占据较大篇
                 幅, 关于注释质量评估则只介绍了           2019  年及以前的工作. Song   等人  [9,33] 的研究重点同样是注释生成方法, 在注释
                 质量评价方面介绍了        BLEU  等基于相似性的指标, 同时对人工评价的常用角度进行了梳理. 陈翔等人                     [11] 的综述包
   317   318   319   320   321   322   323   324   325   326   327