System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于异构超图的代码审阅者推荐方法技术_技高网

一种基于异构超图的代码审阅者推荐方法技术

技术编号:40093118 阅读:5 留言:0更新日期:2024-01-23 16:31
本发明专利技术实现了一种基于异构超图的代码审阅者推荐方法与系统。包括两个步骤,分别是异构超图构建步骤和代码审阅者推荐步骤,最终实现对于审阅者的推荐;所述异构超图的构建过程,考虑代码审阅过程中的贡献者、审阅者、PR、标签和组织五种实体和审阅者和PR之间的评论关系、贡献者和PR之间的创建关系、PR与PR之间的相似度关系、PR和标签之间的标记关系、开发者与组织之间的成员关系五种关系,实体构成异构超图的顶点集,并且异每一种类型的关系对应于一种超边,通过架构构建和计算超边权重两个步骤实现。将代码审阅者推荐抽象为超图上的排序任务,采用基于超图的搜索策略,利用局部一阶近似计算顶点分数,对候选代码审阅者进行排序和推荐,以找到Pull Request适合的代码审阅者。

【技术实现步骤摘要】

本专利技术涉及网络搜索,尤其涉及一种基于异构超图的代码审阅者推荐方法


技术介绍

1、作为一种流行的软件实践,代码审阅被认为对商业项目和开源软件项目的软件质量至关重要。通过手动仔细检查源代码,审阅者旨在识别可能的问题或改进机会,从而防止容易出错的代码片段被纳入项目存储库。除了安全质量外,代码审阅也有助于知识传播、团队协作等。然而研究表明代码审阅高度依赖于审阅者的经验和知识,这意味着识别合适的审阅者对代码审阅效果至关重要。相关研究指出,代码审阅者的不当分配可能需要12天的时间才能审阅开源软件开发中的代码更改,因此需要推荐工具来加速代码审阅过程。

2、在具有大量参与者的项目中找到合适的代码审阅者是一项具有挑战性的任务,在过去的十年中,自动代码审阅者推荐引起了很多关注,学术界和工业界已经开发了许多代码审阅者推荐方法来支持这项任务。这些方法应用了类似的策略,即首先对代码审阅历史进行建模,然后根据结果模型推荐代码审阅者。一般来说,根据不同的建模方法,主要分为基于启发式的、基于学习的和基于图的推荐三种主要类型。基于启发式的方法,使用简单的启发式规则提出新的代码审阅者,例如,基于文件路径相似性或利用外部库和技术知识相似性进行跨项目审阅者推荐。这些启发式方法易于理解,但通常存在低精度问题且很难考虑更多相关信息。基于机器学习的方法,通常比简单的基于启发式的推荐者表现得更好,然而这些推荐者背后的模型在特征工程、训练和长期维护方面需要大量的工作负载。此外它们通常可解释性较差,这成为未来对推荐方法扩展和改进的障碍。基于图学习方法,使用图作为模型对评论历史进行建模,开发人员和审阅者之间的个人资料和社会关系或网络被形式化为图顶点和边,是目前较为先进的算法。

3、建模代码审阅历史有两个难点。首先代码审阅过程中有许多不同类型的实体和关系,这使得开发一个同时考虑所有实体和关系的统一框架变得困难。其次在代码审阅过程中,一些关系超出了成对关系。例如,两个以上的审阅者评论了同一个pull request或者多个开发者属于同一个组织。本专利技术称这种关系为高阶关系,以往处理成对关系的传统图方法无法正确建模这些高阶关系。

4、在代码审阅者推荐方法方面,基于普通图的方法存在信息缺失的问题。因此有研究者提出基于超图来建模代码审阅过程,但是该工作仅考虑贡献者、审阅者和pr三种实体及其三者之间的关系,因此仍存在一定的改进空间。

5、当开源项目或者开源社区出现代码审阅效率低下等问题时,本专利技术希望提出一种推荐方法,为新发起的pull-request推荐代码审阅者。该推荐方法通过异构超图来建模代码审阅过程中丰富的信息,旨在提高开源项目的代码开发效率,进而提升开源项目的健康度水平。

6、具体来说,本专利技术主要解决的问题包括(1)使用异构超图来建模代码审阅过程中的多类型实体和关系。超图是普通图的推广,其中边称为超边,是顶点集的任意非空子集。超图的每个顶点对应于任何类型的实体,超边用于对高阶关系进行建模。通过使用异构超图模型,可以准确地捕获各种类型的实体之间的高阶关系,并且不会丢失任何信息。(2)以往的研究使用“随机游走”策略以一定的概率选择邻域作为下一个顶点,这在某种程度上是低效的。本专利技术将代码审阅者推荐抽象为超图上的排序任务,以找到pull request适合的代码审阅者。


技术实现思路

1、为此,本专利技术首先提出一种基于异构超图的代码审阅者推荐方法,包括两个步骤,分别是异构超图构建步骤和代码审阅者推荐步骤,最终实现对于审阅者的推荐;

2、所述异构超图的构建过程,考虑代码审阅过程中的贡献者、审阅者、pr、标签和组织五种实体,以及审阅者和拉取请求(pr)之间的评论关系、贡献者和pr之间的创建关系、pr与pr之间的相似度关系、pr和标签之间的标记关系、开发者与组织之间的成员关系五种关系,实体构成异构超图的顶点集,并且异每一种类型的关系对应于一种超边,通过架构构建和计算超边权重两个步骤实现;

3、架构构建:五种类型的实体构成了异构超图的顶点集。所以v=c∪r∪p∪t∪o。并且异构超图中有五种超边,每一种都对应于某种类型的关系。

4、所述代码审阅者推荐步骤基于手工构造的异构超图将代码审阅者推荐抽象为超图上的排序任务,采用了“查询和排序”策略,给定一个超图gbase和新提交的pt,首先通过计算其与gbase中现有pr的文件路径相似性来构建pr-pr关系,然后将pt与最相似的pr连接起来,建立贡献者-pr关系、pr-标签关系和贡献者-组织关系,这样新的pr及其相关实体和关系都被合并到原始超图gbase中,形成一个新的gt={vt,et};

5、其代价函数定义如下:

6、

7、其中μ>0是正则化参数,当q(f)最小化时获得最优排序结果:

8、f*=arg minfq(f)

9、对于超图g,这种排序策略的关键是找到合适的排序向量能够满足目标函数q(f)最小化,定义如下:

10、q(f)=ft(i-a)f+μ(f-y)t(f-y)

11、其中是一个具有多个元素的查询向量,超图g的每个顶点一个,目标pr及其贡献者将设置为1,否则为0,是一个顶点-超边关联矩阵,是权重矩阵,是顶点度矩阵,是超边度数矩阵,μ是正则化参数,要求q(f)的梯度消失给出以下等式:

12、

13、遵循一些简单的代数步骤,则有:

14、

15、定义α=1/(1+μ)。注意到μ/(1+μ)是一个常数,不会改变排名结果,本专利技术可以将f*重写为:

16、f*=(i-αa)-1y

17、根据排序策略可以获得推荐列表排名,本专利技术可以推荐排名靠前的审阅者作为候选人。

18、所述计算超边权重的具体构造方法为:

19、审阅者-pr关系:在代码评审过程中,一个pr通常会存在多个审阅者,他们可能会通过公开发布的评论的方式来相互影响,因此评论相同pr的审阅者与超图中的超边连接,超边权重通过聚合所有审阅者的贡献来设置:

20、

21、其中,集合r1中的审阅者参与了p1,审阅者r1评论了m1,每条评论的创建时间是超参数λ用于减轻评论的影响,此外在hhgrec中也考虑了审阅者的积极性,即评论越近,其影响就越大,ts和te是数据集的开始时间和结束时间;

22、贡献者-pr关系:通过定义贡献者-pr关系和相应的权重在hhgrec中以不同的方式处理,最近的活动分配更高的权重,其中ti是pi的创建时间,ts和te是数据集的开始时间和结束时间。

23、pr-pr关系:pr之间的超边权重考虑pr之间的文件路径距离,其权重计算如下:

24、

25、

26、其中f1,f2是两个pr中包含的文件路径集合,f1和f2是属于文件路径集f1和f2的特定文件路径,ts和te是数据集的创建和结束时间,t1和t2分别是两个pr的本文档来自技高网...

【技术保护点】

1.一种基于异构超图的代码审阅者推荐方法,其特征在于:包括两个步骤,分别是异构超图构建步骤和代码审阅者推荐步骤,最终实现对于审阅者的推荐;

2.如权利要求1所述的一种基于异构超图的代码审阅者推荐方法,其特征在于:计算超边权重的步骤的具体构造方法为:

【技术特征摘要】

1.一种基于异构超图的代码审阅者推荐方法,其特征在于:包括两个步骤,分别是异构超图构建步骤和代码审阅者推荐步骤,最终实现对于审阅者...

【专利技术属性】
技术研发人员:孙海龙高祥刘子文
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1