[发明专利]一种基于文件路径分析的代码审查者推荐方法有效
申请号: | 201810611269.1 | 申请日: | 2018-06-14 |
公开(公告)号: | CN109002283B | 公开(公告)日: | 2021-07-27 |
发明(设计)人: | 周宇;苏彦颀;刘健 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 江苏圣典律师事务所 32237 | 代理人: | 贺翔 |
地址: | 210016 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 文件 路径 分析 代码 审查 推荐 方法 | ||
本发明公开了一种基于文件路径分析的代码审查者推荐方法,包括步骤如下:构建文件树;基于上步骤得到的文件树构建经验树;根据经验树计算候选代码审查者经验值;对候选代码审查者进行排序;本发明提出的基于文件路径分析的代码审查者推荐方法,提高了代码审查者推荐准确率,同时也减少了代码审查者推荐的运行时间,使其更加高效。
技术领域
本发明属于计算机技术领域,尤其指代一种基于文件路径分析的代码审查者推荐方法。
背景技术
在开发周期较长的大型项目中,无论是商业项目还是开源项目,执行到位的代码审查是保证软件代码质量的关键所在。举例来说,在Mozilla项目中,任何一次的代码提交都需要被两个代码审查者审查。但这带来的好处就是在代码在合并进入代码仓库之前就可以检测出不少的bug,这样一来也就减轻后期测试的负担和修复的成本,因为bug发现的越早,涉及到的模块理论上也就越少,解决的成本也就越低。而在代码审查中,审查者很难同时处理多个任务,从一个问题空间到另一个空间的上下文切换是一个挑战,会带来额外的开销,所以分配一个合适的代码审查者是相当困难的,因为如果分配了错误的审查者,或许他的知识背景并不适合这个项目,那么他对这个项目架构组织不熟悉,导致的结果就是这次审查会非常的耗时而且会有几率让bug溜进代码仓库。
在商业项目中,公司的内部有硬性的组织结构划分,在开发过程中,往往是几人到十几人作为一个团队来开发一个项目,做同行代码评审时,往往会依据模块来划分,内部互相做代码审查或者在团队中专门安排代码评审的人员,所以代码审查者的人数往往较少,团队人员对于项目的熟悉程度较高,此外商业项目代码审查的数据和流程往往不会对外公开,也很难找到数量客观的数据集。
在大型的开源项目中,上述提到的问题则显得更为突出,项目核心成员往往只有几十人,而参与的贡献人数都有几千人,而在整合代码前必须要经过代码审查,以托管在Github上的openstack为例,参与的贡献者就已经超过了1600多人,提交的代码更改更是达到了13万次,显然如此多的参与人数和更改,往往不能得到及时审查,则很大可能会导致开发流程的延迟甚至阻塞,所以要找出合适的代码审查者是一个非常具有挑战性的任务。
针对自动推荐合适的代码审查者这一问题,比较著名的相关工作是基于项目路径分析的RevFinder算法。
RevFinder算法是基于文件所在项目路径分析的代码审查者推荐算法,它的主要思想是在相似的文件路径下的文件应该由有着“相似的经验”的代码审查者审查。可以理解为,当一个新的提交审核来时,则在历史记录中搜索审核过相似的文件路径的审查者,并由相对应的路径相似算法计算出得分,然后将分数分配给每个对应的审核人员。在遍历完所有的文件路径后,每个审核人员都有一个对应的总分。之后根据分数来进行推荐优先级的排序,之后计算准确率。
虽然RevFinder算法可以较好的推荐代码审查者,但是仍有一些不足需要改进。
RevFinder算法仅仅利用审查者历史审查过的文件路径与一个新提交所涉及的文件路径的字符串比较技术进行代码审查者推荐,即路径的最长相同前缀、最长相同后缀、最长相同子字符串和最长相同子序列,再利用Borda技术将其结果结合得到文件路径的相似性,此算法虽然可以在一定程度上解决代码审查者推荐的问题,但是只考虑到了文件路径的相似性,却没有考虑到一条文件路径下不同位置的文件相似所得到的权值是不同的,例如,候选代码审查者所审查的历史文件在对应的路径中离所要审查的目标文件的距离越远的时候,审查者对于该目标文件的了解程度也应该随之减少,即与距离成反比。
发明内容
针对于上述现有技术的不足,本发明的目的在于提供一种基于文件路径分析的代码审查者推荐方法,以解决大型开源项目中,由于不能及时高效的推荐合适的代码审查者,所造成的更改丢失甚至开发流程延迟、阻塞的问题。
为达到上述目的,本发明采用的技术方案如下:
本发明的一种基于文件路径分析的代码审查者推荐方法,包括步骤如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810611269.1/2.html,转载请声明来源钻瓜专利网。