Page 50 - 《软件学报》2021年第11期
P. 50
3376 Journal of Software 软件学报 Vol.32, No.11, November 2021
从图 2 可以看出,绝大多数代码评审人并不是一直活跃的,他们会有很多不活跃的时间.如果在这些不活跃
的时间推荐给他们评审任务,则他们进行评审的响应时间会非常长,或者说响应的概率很小.因此,考虑评审人
在最近时间内的活跃情况,有助于找到合适且响应速度快的代码评审人.
1.4 多特征对比分析
从上面两节分析中我们发现,在进行评审人推荐时,需要考虑人员响应时间和活跃性两个特征;同时,已有
研究指出,人员经验会影响评审人推荐的效果.本节进一步分析基于各自特征得到的代码评审人是否存在重合,
从而启发我们的方法设计.
我们取 flutter/flutter 和 ohmyzsh/ohmyzsh 两个项目中的全部数据,分别基于平均响应时间、活跃性(即最近
一次参加评审的时间)和历史评审总次数(表征人员经验)这 3 个特征进行统计,并得到基于各自特征的评审人
排序.图 3 给出了不同特征下前 10 个评审人的交叠情况.
(a) flutter/flutter (b) ohmyzsh/ohmyzsh
Fig.3 Personnel overlapping diagram based on respective characteristics
图 3 基于各自特征的人员交叠图
从图中可以看出,基于各自特征推荐的代码评审人基本不存在重叠.具体来说,平均响应时间最快的 10 个
评审人与其他两个特征的前 10 名均未有交叠.在活跃性最高和评审总次数最多的统计结果中,flutter/flutter 和
onmyzsh/ohmyzsh 仅有两个评审人交叠.
这说明,3 个特征需要同时进行考虑,才能推荐出既合适又能在更短时间内完成评审的代码评审人.因此,我
们将采用多目标优化方法进行推荐.
2 MOC2R:基于多目标优化的代码评审人推荐
前面的分析和实验表明,代码评审人在历史代码评审中的响应速度、最近时间内的活跃性均会影响他们是
否及时进行代码评审:历史响应速度表征评审人的工作习惯,响应速度快的评审人未来也可能快速完成评审;活
跃性表征评审人参加待评审任务的可能性,近期活跃的评审人更有可能快速完成评审.已有研究已经指出,评审
人对于待评审任务的经验会影响代码推荐效果 [5−7] .因此,这 3 个方面需要同时考虑,以便找到合适且响应速度
快的代码评审人.
本文提出的基于多目标优化的代码评审人推荐方法 MOC2R(multi-objective code reviewer
recommendation),以最大化代码评审人的经验、最大化代码评审人在约定时间内的响应概率、最大化所推荐人