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

3748                                                       软件学报  2025  年第  36  卷第  8  期


                    随后, 本文作者人工分析了每一篇文献的标题与摘要, 并阅读引言部分的内容. 在此基础上, 应用纳入排除规
                 则进行人工筛选, 保留了       47  篇文章. 具体的纳入规则包括: 1) 文献提出了一种注释生成方法且包含人工评价环节,
                 从一些维度对注释质量进行了人工打分; 2) 文献与代码注释质量问题相关且包含对注释质量的具体评价方法, 自
                 动评价或人工评价皆可. 具体的排除规则包括: 1) 文献不是英文或中文撰写; 2) 文献少于                       4  页; 3) 文献无法通过数
                 字方式获取; 4) 文献使用的注释质量评价方法是基于深度学习的方法. 这里排除基于深度学习的注释质量评价方
                 法主要是出于如下考虑: 这类方法需要人工标注数据集训练模型以评价注释, 成本过高且训练出的模型不一定适
                 用于所有注释     [39] , 例如一些文献使用深度学习的方法检测注释与代码的不一致性, 更适合单独对其展开研究.
                    最后, 本文进一步检查保留下的文献的参考文献, 同样应用纳入排除规则进行拓展分析, 得到了一个更完善的
                 包含  59  篇论文的论文集    (截至  2023  年  6  月), 形成了表  1  所示的相关文献概览. 这些论文中发表于        CCF A  类或  B
                 类会议或期刊的论文共有         37  篇, 占比约  62.7%. 这表明代码注释质量评价目前在国际主流会议和期刊上处于较为
                 活跃的状态, 是热门的研究领域.

                                                   表 1 相关文献情况概览

                                    研究问题                研究内容         相关文献数          CCF A或B类
                           从哪些维度来评价代码注释的质量?             评价维度            35             24
                           有哪些可量化的注释质量评价方法?             评价方法            24             13

                 2.2   开放数据集注释的选取
                    通过对上述文献进行总结, 本文从现有工作中选取了                  3  个当前主流的开放注释数据集         [30] 进行注释质量分析.
                 Shi 等人  [30] 的研究发现这  3  个数据集均存在大量比例由于不充分的预处理而引入的噪音注释, 因此本文采用了
                 Shi 等人提供的去除噪音后的数据集版本, 具体的情况如表                 2  所示. 其中, TLC  数据集  [40] 与  Funcom  数据集  [41] 的样
                 本来源于若干     Java 开源项目的   Java 方法和相应的    Javadoc 的首句注释. CSN  数据集   [42] 来自  GitHub  上的开源项目
                 并包含了   6  种编程语言代码的注释, 本文选取了该数据集的              Java 语言部分进行研究.

                                                    表 2 开放数据集情况

                                  参数                TLC             CSN             Funcom
                               训练集样本数              53 597          323 226          1 184 438
                               验证集样本数               7 562           8 849            62 702
                               测试集样本数               7 584           19 319           69 392
                                样本总数               68 743          351 394          1 316 532

                    本文在选取数据集时主要考虑了以下理由: 1) 主流性: Java 是广泛使用的编程语言之一, 当前注释生成工作
                 通常以   Java  语言为研究对象, 在表     1  所示的  35  篇与注释生成方法相关的文献中, 共有           33  篇在  Java  数据集或
                 Java 软件项目上开展实验并进行人工评价; 2) 代表性: 这             3  个数据集被当前主流的注释生成工作广泛采用, 有利
                 于对比分析; 3) 兼容性: 本文使用的评价指标都是独立于编程语言的, Java 语言数据集上的研究结果在一定程度
                 上具有推广性.

                 2.3   面向代码注释生成任务的注释质量评价方案
                    如前所述, 当前代码注释生成任务主要依靠              BLEU  等指标评价生成注释和人工参考注释的相似性, 是一种间
                 接的评价方式. 为了促进代码注释生成技术的研究, 本文拟在充分调研现有代码注释质量评价方法的基础上, 总结
                 提出一套量化的可直接应用于人工注释和生成注释的质量评价指标, 并基于这些指标对现有代码注释开放数据集、
                 典型方法生成的注释以及         ChatGPT  生成的注释进行质量分析, 以更好地揭示出当前注释生成和注释质量的实际
                 情况. 为此, 本文采取的面向代码注释生成任务的注释质量评价方案设计如下.
                    首先, 为了评价和分析开放数据集的代码注释质量, 本文对以上                    3  个主流开放数据集中的人工注释进行了评
                 价和分析. 针对评价指标明显异常的样本, 开展人工抽样与案例分析, 以检验所选取的注释质量评价指标是否有助
   320   321   322   323   324   325   326   327   328   329   330