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),以最大化代码评审人的经验、最大化代码评审人在约定时间内的响应概率、最大化所推荐人
   45   46   47   48   49   50   51   52   53   54   55