Page 209 - 《软件学报》2024年第6期
P. 209
杨岚心 等: 基于多标签学习的代码评审意见质量评价 2785
RQ2: 本文提出的方法能否有效地评价代码评审意见质量等级?
本文提出的方法属于混合方法 (概念模型+自动化模型). 基于多标签学习范式和具体的文本分类模型来自动
化地预测质量属性是评价质量等级最关键的步骤, 其有效性在回答 RQ1 和 RQ2 中分析和讨论.
4.2 实验设计
4.2.1 数据准备
实验使用的代码评审意见采集自国内某全球领先的软件企业. 为了保证实验数据集的有效性, 尤其是代码
评审意见文本的多样性和复杂性, 实验对项目设置了以下准入条件: (1) 在过去 3 年处于开发状态; (2) 至少积累
了 1 000 条评审意见; (3) 至少有 20 名开发者以评审者身份参与评审. 最终 34 个项目满足准入条件. 实验对 34
个项目的评审意见进行了随机采样, 以保证每个项目都贡献了相同数量 (500) 的实验样本. 此外, 尽管评审意见
中的特殊标签 (如“缺陷类型”和“严重等级”等) 有助于评价其质量, 本文在数据准备阶段仍将其完全移除的原因
是: 仅有部分项目的部分评审意见包含该类特殊标签, 考虑特殊标签将会导致实验的内部效度威胁, 如影响人工
标注和模型训练等. 全体作者首先集中分析评审意见实例, 制定标注检查表; 然后通过标注少量评审意见, 计算
不一致程度, 反复调整、验证, 直至确定标注检查表; 随后 3 位作者根据检查表 (详见第 5.2 节) 独立地标注每一
条评审意见, 最后通过召开集中会议讨论和解决不一致的意见. 图 4 展示了数据集中的评审意见的质量属性分
布和质量等级分布.
较差
18 000
否 是 2%
15 000 优秀
12 000
13%
样本数量 9 000 一般
21%
6 000
3 000 良好
64%
0
建议 评价 疑问 情绪 (积极)
(a) 质量属性 (b) 质量等级
图 4 数据集分布
HL =
4.2.2 基准模型
本文提出的方法将预测/学习代码评审意见质量属性形式化为文本分类任务, 本文的评价对象, 即“行内评审
意见”属于短文本类型 (行内评审意见 (inline comments): 针对 pull request 中的某一行或几行代码的评审意见, 大
部分少于 100 字, 属于短文本类型; 行外评审意见 (non-inline comments): 针对 pull request 全体内容的评审意见, 大
部分有数百字之多, 属于长文本类型). 因此实验的基准模型选择了近年来被广泛使用的用于短文本分类任务的自
动化模型, 包括 TextCNN [44] 、TextRCNN [45] 、FastText [46] 、DPCNN [47] 和 Transformer [39] .
4.2.3 评价指标
本文提出的方法旨在基于多标签学习范式构建自动化模型, 因此实验使用多标签学习任务中最常见的若干指
标 [48] 来量化评价各模型表现.
● 汉明损失 (Hamming loss, HL):
L
1 N ∑∑
XOR(y ij , ˆy ij ) (9)
NL
i = 1 j=1
● 0-1 损失 (0-1 loss, 01L):
1 N ∑
01L = I(Y , ˆ Y) (10)
N
i=1
● 宏 F1 分数 (macro-F1 score, mF):