Page 37 - 《软件学报》2021年第12期
P. 37

蒋竞  等:开源社区评审过程度量体系及其实证研究                                                         3701


         和指标值得本文借鉴.

         3    评审过程度量体系
             代码评审是保证开源软件质量的重要环节.本文研究评审过程度量体系,对开源项目的评审过程进行评估.
                    [3]
         参考以往论文 ,本文提出两个方面的指标:首先是评审活动指标,用来评估评审活动的情况,包括评审时间、评
         审次数、评审信息长度、代码改动行数;然后是人员分布指标,反映改动者、评论者和决策者的分布情况.
             项目里不同的文件代码规模悬殊,根据文件来计算度量指标差异会很大.根据文献[3]使用模块来确定统计
         对象,对同属于一个子文件夹下的文件计算指标.对于一个模块 M,FSet M 是模块 M 里的文件集合,PSet M 是改动
         过模块 M 的贡献请求集合,DSet M 是改动、评论或者决策过模块 M 的用户集合,其中,CSet M 是改动模块 M 的改
         动者集合,RSet M 是评论模块 M 的评论者集合,ISet M 是评审模块 M 的决策者集合.对于一个贡献请求 P i (P i ∈
         PSet M ),定义其评论条数为 I(P i ),评审时间为 T(P i ).对于一个文件 F i (F i ∈FSet M ),a(F i ),d(F i ),m(F i )分别为文件 F i 里
         增加、删除、修改的代码行数.对于一个用户 D i (D i ∈DSet M ),CH(D i ,M)为用户 D i 对模块 M 做出的改动的行数,
         RE(D i ,M)是用户 D i 在模块 M 里的评论总数,PR(D i ,M)为 D i 在模块 M 里决策了的贡献请求数目.

         3.1   评审活动
             定义 1(评审次数).  评审次数是一个模块所经历的所有评审次数.对于一条被整合进入源代码库的贡献请
         求,它的代码改动必然涉及到某些模块.每有一条贡献请求改动了模块 M,就称模块 M 经历了一次评审.PSet M 是
         改动过模块 M 的贡献请求集合,card(PSet M )是 PSet M 集合里的贡献请求数目,就是模块 M 的评审次数.评审次数
         N 为
                                              N=card(PSet M )                                 (1)
             定义 2(评审信息长度).  评审信息是评审过程中的评论条数.在评审一个贡献请求的时候,人们可以对其提
         出自己的批注和意见.评审信息反映改动的代码是否经过了大量讨论.对于一个模块的评审信息长度,定义为这
         个模块中每条贡献请求的评论条数之和.M 是选定的一个模块.则评审信息长度 L 为
                                              L = ∑   IP i                                    (2)
                                                       ()
                                                  ∈
                                                 i PPSet M
             定义 3(代码改动行数).  代码修改最重要的特征之一,就是代码改动的行数,包括代码的增添、删减和修改
         行数.这些属性是一个代码改动核心的特征,通过代码的增添、删减和改动行数,可以清楚地知道软件在一段时
         间内究竟有多少改动.一个模块的代码改动行数 CH(M),就是这个模块中所有文件的增添、删除和修改的代码
         行数:
                                      CH  (M =  )  a ()F + ∑  i  d ()F +  i  m ()F i          (3)
                                              ∈
                                              i FFSet M
             定义 4(评审时间).  一个贡献请求从创建开始,一直到评审结束持续的时间.评审时间以模块为单位,计算一
         个模块里贡献请求的评审时间之和.M 是选定的一个模块.则评审时间 T 定义为
                                              T = ∑   T  ()P i                                (4)
                                                 i PPSet  M
                                                  ∈
         3.2   人员分布
             定义 5(改动者数量).  假如一个文件里面,提交代码修改的人数越多,那么提交的代码风格可能差异越大.找
         出模块的贡献请求集合中所有的改动者集合,计算集合里的改动者数目.改动者数量 C 为
                                              C=card(CSet M )                                 (5)
             定义 6(评论者数量).  在评审过程中,评论者对评审结果有直接影响.评论者可以对代码修改提出自己的意
         见,比如指出代码修改里面的不足,而这些评论可以作为后面决策工作的参考.找出模块的贡献请求集合中所有
         的评论者集合,计算集合里的评论者数目.评论者数量 R 为
                                              R=card(RSet M )                                 (6)
   32   33   34   35   36   37   38   39   40   41   42