System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于多尺度时序分析的变更代码质量评估方法技术_技高网

一种基于多尺度时序分析的变更代码质量评估方法技术

技术编号:40873806 阅读:5 留言:0更新日期:2024-04-08 16:42
本发明专利技术公开了一种基于多尺度时序分析的变更代码质量评估方法,涉及软件测试技术领域。本发明专利技术首先将持续集成演变轨迹从时序上划分为稳定序列段和异常序列段,从而构建集成序列样本集;其次在样本集的基础上,基于双重注意力提取序列之间以及序列内部特征的依赖,训练序列相似度模型;最后利用模型在多个时间尺度上进行加权综合评估,判断变更代码的质量,即是否包含缺陷,筛选出不包含缺陷的代码评审,从而减少代码评审工作量,有效提高代码评审效率。

【技术实现步骤摘要】

本专利技术涉及软件测试,具体涉及一种基于多尺度时序分析的变更代码质量评估方法


技术介绍

1、随着持续集成和devops的广泛应用,需要大量的代码评审来保证集成代码质量。已有研究表明,超过70%的代码提交都不存在缺陷,如果不做区分、平等地对所有提交进行代码评审,将浪费大量的时间和资源,导致较高的代码评审成本。已有研究中,有研究采用机器学习中的自编码、变分编码器来预测代码评审的二分结果;有研究者使用机器学习预测代码提交是否被合并到主线代码库。随后,有研究者提出用代码的抽象语法树转换为简化图,并通过卷积神经网络来代码评审的结果。此外,近两年也有研究者提出commit级别的缺陷预测技术,即时缺陷预测技术,其包括基于不同粒度的语义特征的即时缺陷预测方法,学术界和工业界联合提出的基于深度学习的工作量感知即时缺陷预测、基于监督学习和无监督学习的即时缺陷预测,项目内和跨项目场景下的即时缺陷预测。通过调研发现,变更代码的质量评估得到了学术界和工业界的广泛关注。

2、然而,现有的变更代码质量评估方法,仅使用当前版本静态分析的手动特征或者粗粒度的代码语义、结构特征,未能建模变更代码集成演变过程中的动态特征以及不同粒度下的代码变化模式,导致质量评估不准确,且无法准确筛选出不必要的代码评审,增加了代码评审工作量。


技术实现思路

1、针对现有技术中的上述不足,本专利技术提供的一种基于多尺度时序分析的变更代码质量评估方法解决了现有技术未利用变更代码集成演变过程中的动态特征以及不同粒度下的代码变化模式,导致质量评估不准确,且无法准确筛选出不必要的代码评审,增加了代码评审工作量的问题。

2、为了达到上述专利技术目的,本专利技术采用的技术方案为:

3、提供了一种基于多尺度时序分析的变更代码质量评估方法,其包括以下步骤:

4、s1、获取历史集成版本,并基于历史集成版本构建集成版本轨迹;

5、s2、对集成版本轨迹进行提取,得到正负样本序列对并构建集成序列样本集;

6、s3、构建序列相似度模型,将集成序列样本集输入至序列相似度模型进行训练,得到训练后的序列相似度模型;

7、s4、获取项目代码变更节点对应的相邻子序列,利用训练后的序列相似度模型进行多尺度检测和加权汇总,得到对应的代码质量评估结果;根据代码质量评估结果判断对应的变更代码的质量,完成对变更代码质量的评估。

8、进一步地,步骤s1进一步包括:

9、s1-1、基于时间维度对历史集成版本进行处理,得到集成异常指数;基于集成异常指数获取对应的演变轨迹;

10、s1-2、对演变轨迹进行分段识别,得到识别后的演变轨迹,即集成版本轨迹。进一步地,步骤s1-1的公式为:

11、anomalyscore(i)=fault(ti)

12、p=[anomalyscore1,anomalyscore2,...,anomalyscoren]

13、其中,anomalyscore(i)表示第i个历史集成版本的集成异常指数,ti表示时间顺序上的第i个历史集成版本,fault(ti)表示集成错误函数,即计算历史集成版本ti的集成错误个数,p表示演变轨迹,n表示历史集成版本总数,anomalyscore1,anomalyscore2,…,anomalyscoren表示各个历史集成版本对应的集成异常指数。

14、进一步地,步骤s1-2的具体过程为:

15、s1-2-1、根据变更代码问题引入、集成异常结束、变更代码问题消除的三个关键时间点和集成异常指数,对演变轨迹进行分段,得到分段后的演变轨迹;

16、s1-2-2、对分段后的演变轨迹进行识别,得到异常序列段和稳定序列段,即为识别后的演变轨迹。

17、进一步地,步骤s2中的正样本为代码处于稳定阶段内的序列,负样本为代码缺陷引入前后的序列。

18、进一步地,步骤s3中的序列相似度模型包括依次串联的注意力模块、平均模块;注意力模块包括并联的序列段注意力层和序列内注意力层;序列段注意力层包括依次串联的序列段嵌入层、序列段多头注意力层以及序列段上采样层;序列内注意力层包括依次串联的序列内嵌入层、序列内多头注意力层以及序列内上采样层;平均模块包括并行的平均层。

19、进一步地,步骤s3进一步包括:

20、s3-1、基于集成序列样本集,构建序列样本对集;

21、s3-2、将序列样本对集分别输入至序列段嵌入层、序列内嵌入层,得到对应的序列段嵌入向量和序列内嵌入向量;

22、s3-3、将序列段嵌入向量和序列内嵌入向量分别输入至序列段多头注意力层、序列内多头注意力层,得到对应的集成版本间的特征向量、集成版本的时间点之间的特征向量;

23、s3-4、将集成版本间的特征向量、集成版本的时间点之间的特征向量分别输入至序列间上采样层、序列内上采样层,得到采样后的集成版本间的特征向量、集成版本的时间点之间的特征向量;

24、s3-5、将采样后的集成版本间的特征向量、集成版本的时间点之间的特征向量分别输入至平均层,得到最终的集成版本间的特征向量、集成版本的时间点之间的特征向量;

25、s3-6、根据公式:

26、

27、得到损失函数loss{p′,n;x};其中,d表示相似度,p′表示最终的集成版本间的特征向量,n′表示最终的集成版本的时间点之间的特征向量,x表示输入的序列段,即序列样本对集,stopgrad(·)表示异步训练操作;

28、s3-7、通过损失函数对序列相似度模型的参数进行调整,得到训练后的序列相似度模型。

29、进一步地,步骤s4进一步包括:

30、s4-1、设置m个不同尺度的窗口;

31、s4-2、将相邻子序列分别输入至各尺度检测窗口下的训练后的序列相似度模型,得到各尺度对应的检测结果;

32、s4-3、将各尺度对应的检测结进行加权汇总操作,得到代码质量评估结果;

33、s4-4、根据代码质量评估结果判断对应的变更代码的质量,完成对变更代码质量的评估。

34、本专利技术的有益效果为:该评估方法考虑到集成版本之间的关系,将集成从时序上划分为稳定序列段和异常序列段,可准确提取稳定序列段特征之间的关系和异常序列段特征之间的关系,有效提升模型对异常的识别准确率;在序列间和序列内使用了双重多头自注意力机制,可提取各序列间的依赖和各序列间特征的依赖,并对序列使用多尺度进行划分,有利于模型识别不同尺度的异常序列段,提高变更代码质量评估的准确度,进而提升代码评审的工作效率。

本文档来自技高网...

【技术保护点】

1.一种基于多尺度时序分析的变更代码质量评估方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S1进一步包括:

3.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S1-1的公式为:

4.根据权利要求2所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S1-2的具体过程为:

5.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S2中的正样本为代码处于稳定阶段内的序列,负样本为代码缺陷引入前后的序列。

6.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S3中的序列相似度模型包括依次串联的注意力模块、平均模块;所述注意力模块包括并联的序列段注意力层和序列内注意力层;所述序列段注意力层包括依次串联的序列段嵌入层、序列段多头注意力层以及序列段上采样层;所述序列内注意力层包括依次串联的序列内嵌入层、序列内多头注意力层以及序列内上采样层;所述平均模块包括并行的平均层。

7.根据权利要求6所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S3进一步包括:

8.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤S4进一步包括:

...

【技术特征摘要】

1.一种基于多尺度时序分析的变更代码质量评估方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤s1进一步包括:

3.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤s1-1的公式为:

4.根据权利要求2所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤s1-2的具体过程为:

5.根据权利要求1所述的基于多尺度时序分析的变更代码质量评估方法,其特征在于:所述步骤s2中的正样本为代码处于稳定阶段内的序列,负样本为代码缺陷引入前后的序列。

6.根...

【专利技术属性】
技术研发人员:李英玲黄磊王子翱任书仪杨海宁
申请(专利权)人:西南民族大学
类型:发明
国别省市:

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

1