一种基于历史记录的代码审核人推荐方法与流程

文档序号:11407222阅读:313来源:国知局

本发明涉及代码审核领域,更具体地,涉及一种基于历史记录的现代代码审核人推荐方法。



背景技术:

随着软件工程领域的进一步发展,代码数量和维护难度也随之提高,以降低维护成本,提高代码的质量和效率为目的的现代代码审核受到越来越多人的重视。然而,从众多的候选审核人中,为一段待审核的代码找到最合适的审核人越来越成为制约现代代码审核进一步发展的瓶颈。当前现有的审核人推荐方法主要分为两种:基于路径相似度的方法和基于代码行审核记录的方法。基于路径相似度的审核人推荐方法是依次将待审核代码的路径与审核记录中已审核完毕的代码路径进行路径相似度分析,以相似度为基准,利用传播效用,从而确定历史记录中审核人的相应审核优先级。基于代码行审核记录的审核人推荐方法以修改的代码行为单位,查找历史记录中审核同一行代码的审核人,依据审核人对该行代码的贡献,从而确定推荐人的推荐次序。

其中,现有技术中,基于路径相似度的代码审核人推荐方法没有考虑不同审核人对同一代码不同时间段所表现出的专业度水平,该方法视参加审核的审核人的贡献是一致的;与此同时,在衡量专业度的标准上,该方法仅仅考虑路径相似度,忽略了其他反馈信息的重要性,导致算法整体的精确度不高;基于代码行审核记录的审核人推荐方法注重代码行的修改审核信息,以代码行为基本单位,然而在实际生产中,修改同一行代码的情况比较少,对于缺少行修改审核信息的系统,该方法表现出很大的不确定性。



技术实现要素:

本发明提供一种可靠性较高的基于历史记录的代码审核人推荐方法。

为了达到上述技术效果,本发明的技术方案如下:

一种基于历史记录的代码审核人推荐方法,包括以下步骤:

s1:基于历史审核记录,提取代码更新日期、反馈和路径信息,构建专业度模型;

s2:针对当前输入的待审核代码,提取路径信息之后,通过字符串对比技术,获取当前代码与历史纪录中已审核代码路径的相似度;

s3:利用s1中得到的专业度模型,结合s2中得到的相似度构建基于权重的路径相似度模型并输出审核人的推荐序列。

进一步地,所述步骤s1的具体过程如下:

s11:输入历史审核记录,以每个审核记录为单位,提取审核记录中的反馈、日期信息;

s12:利用s11中得到的数据构造专业度模型。

进一步地,所述步骤s11的过程如下:

s111:对每个历史审核记录,记录当前审核信息的id号;

s112:提取每个历史审核记录中的路径信息;

s113:统计审核人ri针对当前记录所做反馈信息的总数量

其中,commenti表示审核人ri对当前记录的一条反馈信息;

s114:统计审核人ri对本记录所贡献的工作日的总数量

其中,workdayi表示审核人ri在工作日workdayi对本记录进行审核;

s115:查找当前审核记录中审核人ri的最近反馈时间

其中,recent函数表示ri的最近反馈时间,以日期为基本单位。

进一步地,所述步骤s12的过程如下:

s121:统计当前记录反馈信息的总数量commentall

其中rall={r0,r1,r2...,ri,...}表示曾经审核当前记录的所有审核人的集合;

s122:统计针对当前记录所贡献的工作日的总数量workdayall

s123:统计针对当前记录中最近的反馈时间recencyall

s124:利用s121-s123得到的数据计算不同审核人对当前记录不同的专业度expertise(c,r):

其中,c为当前审核记录,r表示审核人,expertise(c,r)为r在c中的专业度,它是随着时间而变化的量,同时与审核人所做的贡献有关。

进一步地,所述步骤s2中通过字符串对比技术,获取当前代码与历史纪录中已审核代码路径相似度的过程如下:

s21:将得到的路径信息以反斜杠为分隔符进行分割;

s22:依据四种字符串对比技术,求得两路径的公共路径filepathcommon,所述四种字符串是最长公共前缀、最长公共后缀、最长公共子串和最长公共序列:

filepathcommon=stringcomparison(cipathh,cnewpathk)

其中,cipathh∈filepathci,cnewpathk∈filepathcnew分别表示代码ci和cnew的子路径;

s23:利用得到的公共路径filepathcommon,求得路径间的相似度scoreci:

forcipathh∈filepathciandcnewpathk∈filepathcnewdo

scoreci+=filepathcommon/max(|cipathh|,|cnewpathk|)

scoreci=scoreci/(|filepathci|×|filepathcnew|)

其中,|cipathh|和|cnewpathk|表示子路径被反斜杠分割之后的元素个数|filepathci|和|filepathcnew|分别表示待审核代码ci和cnew子路径的个数。

进一步地,所述步骤s3中提取已审核代码的时间信息来计算其时间权重的过程是:

提取已审核代码的时间信息,计算该代码的时间权重scoretimeci:

其中,timeci表示代码ci的最后更新时间,start_time和end_time取决于当前数据集的开始时间和结束时间,通常start_time取开始日期的前一天,scoretimeci∈(0,1]。

进一步地,所述步骤s3中构建基于权重的相似度度模型的过程如下:

s31:获得给定代码与已审核代码路径的相似度scoreci;

s32:获得已审核代码的审核人序列;

s33:根据s1中得到的专业度模型,得到审核人对给定代码的专业度scorerj;

s34:把时间权重、路径间的相似度以及审核人的专业度一一传播到对应的审核人当中;

c[rj].score+=scoreci×scoretimeci×scorerj

其中,rj∈cir,cir为代码ci的审核人序列。

进一步地,所述步骤s3中确定针对给定待审核代码的审核人推荐序列的过程如下:

1)、对给定的待审核代码的审核人序列进行排序,依次确定由四种字符串对比技术确定的四组序列;

2)、对四组字符串序列进行混合,确定对给定待审核代码的审核人推荐序列。

与现有技术相比,本发明技术方案的有益效果是:

本发明利用历史审核记录中对代码的反馈信息,综合时间因素,依次确定不同审核人在不同时间对一段代码的权重,同时结合路径相似度分析,最终确定审核人的推荐序列;该方法提供了一种鲁棒的代码审核人推荐方法,它首先提取历史纪录中不同审核人对某一段代码的反馈,综合反馈的数量、日期、频率等信息,确定不同审核人对一段代码的专业性,然后使用基于路径相似度的字符串对比方法,结合时间因素,利用传播学原理,构建基于权重的路径相似度模型,最后得到不同审核人对一段代码的优先级次序。

附图说明

图1为本发明方法流程图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

如图1所示,一种基于历史记录的代码审核人推荐方法,包括以下步骤:

(1)基于历史审核记录,提取代码更新日期、反馈和路径等信息,构建专业度模型;

(2)针对当前输入的待审核代码,提取路径信息之后,通过字符串对比技术,获取当前代码与历史纪录中已审核代码路径的相似度;

(3)利用步骤(1)的专业度模型,在步骤(2)的基础上,结合时间因素,构建基于权重的路径相似度模型,最终输出审核人的推荐序列。

下面详细介绍(1)至(3)步骤:

所述步骤(1)包括以下步骤:

(1-1)输入历史审核记录,以每个审核记录为单位,提取审核记录中的反馈、日期信息;

(1-2)对步骤(1-1)提取的数据,构造专业度模型;

所述步骤(1-1)的步骤如下:

(1-1-1)对每个历史审核记录,记录当前审核信息的id号;

(1-1-2)提取每个历史审核记录中的路径信息;

(1-1-3)统计审核人ri针对当前记录所做反馈信息的总数量

其中,commenti表示ri为当前记录所做的第i个反馈;

(1-1-4)统计审核人ri对本记录所贡献的工作日的总数量

其中,workdayi表示审核人ri在工作日workdayi对本记录进行审核。

(1-1-5)查找当前审核记录中审核人ri的最近反馈时间

其中,recent函数表示ri最近的反馈时间,以日期为基本单位。

所述步骤(1-2)的步骤如下:

(1-2-1)根据步骤(1-1-2),统计针对当前记录反馈信息的总数量commentall

其中rall={r0,r1,r2...,ri,...}表示曾经审核当前记录的所有审核人的集合。

(1-2-2)根据步骤(1-1-3),统计针对当前记录所做投入的工作日的总数量workdayall

(1-2-3)根据步骤(1-1-4),统计针对当前记录中最近的反馈时间recencyall

(1-2-4)根据步骤(1-2-1)、(1-2-2)和(1-2-3),计算不同审核人对当前记录不同的专业度expertise(c,r):

其中,c为当前审核记录,r表示审核人,expertise(c,r)为r在c中的专业度。它是随着时间而变化的量,同时与审核人所做的贡献有关。

所述步骤(2)的步骤如下:

(2-1)提取待审核代码的路径信息;

(2-2)依据四种字符串对比技术,构建路径相似度模型,依次得出当前代码的路径与历史纪录中代码路径的相似度;

所述步骤(2-1)的步骤如下:

(2-1-1)采取类似步骤(1-1-2),提取待审核代码的路径信息。

所述步骤(2-2)的步骤如下:

(2-2-1)将步骤(2-1-1)和(1-1-2)中所得路径信息以反斜杠为分隔符进行划分;

(2-2-2)依据四种字符串对比技术(最长公共前缀、最长公共后缀、最长公共字串和最长公共序列),求得两路径的公共路径filepathcommon:

filepathcommon=stringcomparison(cipathh,cnewpathk)(8)

其中,cipathh∈filepathci,cnewpathk∈filepathcnew分别表示代码ci和cnew的子路径;

(2-2-3)依据步骤(2-2-2)中的公共路径filepathcommon,求得路径间的相似度scoreci:

forcipathh∈filepathciandcnewpathk∈filepathcnewdo

scoreci+=filepathcommon/max(|cipathh|,|cnewpathk|)(9)

scoreci=scoreci/(|filepathci|×|filepathcnew|)(10)

其中,|cipathh|和|cnewpathk|表示子路径被反斜杠划分之后的元素个数,|filepathci|和|filepathcnew|分别表示待审核代码ci和cnew子路径的个数。

所述步骤(3)的步骤如下:

(3-1)提取已审核代码的时间信息;

(3-2)在步骤(1)、(2)的基础上,结合步骤(3-1),构建基于权重的相似度模型;

(3-3)依据步骤(3-2),最终确定针对给定待审核代码的审核人推荐序列。

所述步骤(3-1)的步骤如下:

(3-1-1)提取已审核代码的时间信息,计算该代码的时间权重scoretimeci:

其中,timeci表示代码ci的最后更新时间,start_time和end_time取决于当前数据集的开始时间和结束时间,通常start_time取开始日期的前一天,由公式(11)可知,scoretimeci∈(0,1]。

所述步骤(3-2)的步骤如下:

(3-2-1)根据步骤(2)获得给定代码与已审核代码路径的相似度scoreci;

(3-2-2)根据步骤(2)获得已审核代码的审核人序列cir;

(3-2-3)根据步骤(1)的专业度模型,得到审核人对给定代码的专业度scorerj;

(3-2-4)根据步骤(3-1-1)、(3-2-1)和(3-2-3),把时间权重、路径间的相似度以及审核人的专业度一一传播到对应的审核人当中;

c[rj].score+=scoreci×scoretimeci×scorerj(12)

其中,rj∈cir,cir为代码ci的审核人序列。

所述步骤(3-3)的步骤如下:

(3-3-1)依据步骤(3-2-4),对给定的待审核代码的审核人序列进行排序,依次确定由四种字符串对比技术确定的四组序列;

(3-3-2)对四组字符串序列进行混合;

(3-3-3)最终确定对给定待审核代码的审核人推荐序列。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1