System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件开发领域,尤其涉及一种基于图神经网络的pull request优先级排序方法。
技术介绍
1、拉取请求pull request(pr)是一种常见的代码审查方式。随着开源代码仓库中项目的规模不断扩大,pr的数量逐渐增多,因此对于评审者而言,pr评审的难度主键增加。
2、在多人协作开发中,pr的审查和合并是非常重要的。因此,pr优先级的排序具有重要意义,可以实现提高代码审核的效率、解决pr堆积问题等目的。在开源项目中,有许多开发者会同时贡献代码,从而产生了大量的pr,需要大量资源进行处理。因此,为了提高代码审核的效率,需要对pr进行优先级排序,以便管理者在审核时先处理最紧急的部分。通过对pr进行优先级排序,一些高优先级的pr可以得到优先处理,使得审核流程更加高效,减少开源项目的等待时间,提高项目的质量和稳定性。另一方面,在一些大型开源项目中,可能会因为用户过多、合并机制不健全等原因,导致pr堆积。此时,对pr进行优先级排序可以帮助管理者更快速地处理pr,减轻pr堆积的困扰,从而对开源代码托管平台的发展产生积极的影响。
3、图神经网络(gnns)适合于pull request(pr)优先级排序的原因在于它们特别擅长处理具有复杂关联性的数据结构,而pr及其相关的代码库、开发者互动和项目依赖性正是这样的复杂网络。图神经网络能够捕获复杂关系,其中节点可以代表pr、开发者、文件或项目模块,边可以表示各种关系,如依赖性、互动历史或关联的议题。这种结构能自然地反映pr之间的相对重要性和紧迫性。同时可以进行
技术实现思路
1、本专利技术的目的在于:提出一种基于图神经网络的pr优先级排序方法,并通过消融实验得到最佳的排序效果。
2、为实现上述目的,本专利技术的技术方案是:提供一种基于图神经网络的pullrequest优先级排序方法,如图1所示,包括以下步骤:
3、s1:爬取pr数据。从github爬取15个大型项目的pr数据,包括pr创建时间,关闭时间,pr修改的内容长度等数据;
4、s2:对pr数据进行处理。包括处理空值和无穷大值,数据标准化,缺省值的自动赋值,标签数值的计算。
5、s3:建立基线模型,利用基线模型,如随机森林等模型计算出其对应的排序结果;
6、s4:建立边的结构。建立“作者-作者”,“评审者-评审者”,“作者-评审者”,“文件-文件”四种边类型,构建出图的基本结构;
7、s5:训练图神经网络模型。基于创建的边结构,进行图神经网络模型权重参数的训练,最终用图神经网络计算得到排序结果。
8、s6:采用多种评价指标ndcg、mrr、map进行排序结果的评价,最终比较图神经网络和各种基线的排序效果。
9、优选的,所述s1中的项目pr数据爬取主要流程包括:
10、s1-1:项目选择,选择合适的项目,确保pr数据量充足,github平台有很多的项目,在选择项目时,需要注意一些特殊情况,避选择存储库已拆分,存储库是只读的,代码评审已经关闭的项目。
11、s1-2:使用github api构建请求:github api以编程方式访问仓库数据,包括pr,基础url为https://api.github.com/repos/{owner}/{repo}/pulls,其中{owner}和{repo}分别替换为目标仓库的用户名和仓库名,发起请求:使用编程语言和库(python的requests库),发送get请求到上述构建的url,在请求头中包含访问令牌进行身份验证,
12、s1-3:数据解析和存储,解析响应:根据返回的json数据,提取需要的信息,包括pr号、创建者、标题、状态、评论数、合并状态,异常处理:加入异常处理逻辑,以应对请求失败、超时或api限制等情况,数据清洗:对提取的数据进行清洗,处理格式不一致等问题
13、优选的,所述s2中的项目pr数据处理的主要流程包括:
14、s2-1:异常数据处理,异常数据处理是一个关键的预处理步骤,确保了输入到图神经网络中的数据质量与可靠性。具体来说,我们首先识别并处理数据中的空值,采用先进的填充策略以维护数据的完整性和意义,此外,对于无穷大值的处理,我们选择合适的填充策略,使用平均值进行替换,
15、s2-2:数据标准化,为了提高模型训练效率并确保不同特征之间具有可比性,我们对处理后的数据进行标准化处理,标准化的主要目的是缩放特征值,我们选择最小-最大缩放(min-max scaling),将所有特征值映射到[0,1]区间内,使其适合图神经网络的标准化方法,以优化模型性能,
16、s2-3:计算标签特征,标签特征的计算涉及到pr是否被合入、pr生命周期、pr评审轮数作为评价指标的计算数据,本专利技术并进行粒度的进一步划分,
17、pr是否被合入这一基准代表了pr的价值,pr被合入说明该pr对项目库具有贡献,否则没有贡献,pr如果被合入,那么对应的优先级分数为4,如果没有被合入,优先级分数为0,
18、pr生命周期为pr从创建到关闭的时间跨度,时间跨度越短表示pr的评审成本越低,更有利于评审者优先进行评审,本专利技术按照每条pr的生命周期升序排序,并按照其所处于的时间长度区间,划分为0,1,2,3,4这五种优先级分数,
19、pr评审轮数为pr一共进行的评审次数,代表该pr的复杂度和争议性,轮数越多,表示其评审成本越高,本专利技术按照每条pr的评审轮数进行升序排序,并按照其所处于的轮数的区间,划分为0,1,2,3,4这五种优先级分数。
20、优选的,所述s3中的基线模型选择与计算的主要流程包括:
21、s3-1:明确任务需求与目标:首先,清晰定义研究问题和目标,这里的排序可以量化为优先级分数或者等级,因此可以采用分类任务或者回归任务的常用模型,
22、s3-2:文献回顾:查阅相关领域的文献,了解在相似任务中通常采用哪些基线模型,注意那些被广泛引用、经过验证有效且能够提供基准性能水平的模型。
23、s3-3:模型的通用性与简易性:选择一些通用性强、实现简单的模型作为基线,例如rf、fifo等,因为它们能够快速提供一个基本性能标准,同时也易于理解和实现。
24、最终,本专利技术选择先前研究中常用的基线模型:rankboost、adarank、ca、listnet、rf、fifo、ssf、m本文档来自技高网...
【技术保护点】
1.一种基于图神经网络的Pull Request优先级排序方法,其特征在于,基于PR的数据特征进行排序,向评审者提供优先级更高的PR,包括以下步骤:
2.根据权利要求1所述的基于图神经网络的PullRequest优先级排序方法,其特征在于,爬取PR数据,包括从Github代码平台选择合适的项目,并进行爬取,S1步骤如下:
3.根据权利要求1所述的基于图神经网络的PullRequest优先级排序方法,其特征在于,对PR数据进行处理,步骤如下:
4.根据权利要求1所述的基于图神经网络的Pull Request优先级排序方法,其特征在于,S3:建立基线模型,步骤如下:
5.根据权利要求1所述的基于图神经网络的PullRequest优先级排序方法,其特征在于,S4:建立边的结构,具体如下,
6.根据权利要求1所述的基于图神经网络的PR优先级排序,其特征在于,S5中基于创建的边结构,进行图神经网络模型权重参数的训练,最终用图神经网络计算得到排序结果,
7.一种终端,其特征在于:包括处理器、存储器以及存储在所述存储器中的
8.一种计算机可读存储介质,其上存储有计算机指令,其特征在于:该计算机指令被处理器执行时实现如权利要求1-6中任一项所述的基于图神经网络的Pull Request优先级排序方法的步骤。
...【技术特征摘要】
1.一种基于图神经网络的pull request优先级排序方法,其特征在于,基于pr的数据特征进行排序,向评审者提供优先级更高的pr,包括以下步骤:
2.根据权利要求1所述的基于图神经网络的pullrequest优先级排序方法,其特征在于,爬取pr数据,包括从github代码平台选择合适的项目,并进行爬取,s1步骤如下:
3.根据权利要求1所述的基于图神经网络的pullrequest优先级排序方法,其特征在于,对pr数据进行处理,步骤如下:
4.根据权利要求1所述的基于图神经网络的pull request优先级排序方法,其特征在于,s3:建立基线模型,步骤如下:
5.根据权利要求1所述的基于图神经网络的pullrequest优先级排序方法,其特征在于,s4:建...
【专利技术属性】
技术研发人员:张贺,吴房浩,杨岚心,周鑫,荣国平,邵栋,
申请(专利权)人:南京匡吉信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。