System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种反模式检测方法、系统、介质和设备技术方案_技高网

一种反模式检测方法、系统、介质和设备技术方案

技术编号:40301203 阅读:7 留言:0更新日期:2024-02-07 20:48
本申请提出一种反模式检测方法、系统、介质和设备,获取包括待测软件系统的依赖模型、代码历史变化信息和代码度量信息的多维度信息,提取包括语义信息特征、依赖信息特征、历史信息特征和度量信息特征,拼接多维度特征,通过神经网络预测模型预测存在反模式的概率,再借助子图结合确定反模式种类和数量。本申请考虑了待测软件系统的多维度信息,相较于目前仅考虑单一维度信息的反模式检测方法考虑的信息更加全面,尤其是在工业场景下,检测结果的假阳率大幅降低,提高了检测准确性。另外,结合深度学习和子图搜索的方法,检测效率高,同时,借助这样的组合式方法,进一步提高了检测准确率。

【技术实现步骤摘要】

本申请软件系统检测方法,具体涉及一种反模式检测方法、系统、介质和设备


技术介绍

1、在软件需求日益增多而开发周期有限的情况下,软件开发人员为了能够按时交付软件产品,在开发过程中可能会忽略良好编程规范,最终交付不成熟的软件产品,从而引入了技术负债。技术负债通常指开发人员在时间和需求的双重压力下进行的妥协,即摒弃最佳方案而改用短期内能加速软件开发的方案,从而导致开发人员必须在未来付出额外的时间和精力修复之前因妥协所造成的问题及副作用,或通过重构把软件架构改善为最佳实现方式。

2、反模式即是技术负债的一种,是软件系统中的一种潜在征兆,意味着软件将会出现质量下降甚至失效的情况。反模式检测旨在发现软件系统中存在的反模式并采取相应的重构措施,以保障软件质量不受影响。

3、传统的基于度量规则制定阈值的反模式检测方法逻辑虽然简单,但始终缺乏公认的阈值标准,导致不同研究的检测结果存在一致性问题。通过结合代码变化的历史信息,支持检测出表征为源代码随时间变化的反模式。采用了机器学习模型的反模式检测方法,能够自动对含有反模式代码和不含有反模式代码的源代码进行分类,在一定程度上提升了反模式检测效率和效果,但是,基于机器学习的反模式检测方法通常仍依赖度量规则,且存在数据集不平衡问题,导致准确率虚高、并缺乏较大规模的基准数据集。


技术实现思路

1、本申请的目的在于解决现有技术中的问题,提供一种反模式检测方法、系统、介质和设备。

2、为了实现上述目的,本申请采用以下技术方案予以实现:

3、第一方面,本申请提出一种反模式检测方法,包括:

4、获取待测软件系统的多维度信息;所述多维度信息包括待测软件系统的依赖模型、代码历史变化信息和代码度量信息;

5、根据所述多维度信息,分别提取待测软件系统中代码实体的多维度特征;所述多维度特征包括语义信息特征、依赖信息特征、历史信息特征和度量信息特征;

6、将所述多维度特征输入至神经网络预测模型,确定代码实体所在依赖子图存在反模式的概率;

7、对所述概率大于预设值的依赖子图所涉及的实体代码和依赖进行子图搜索,确定存在的反模式种类和数量。

8、优选地,所述获取待测软件系统的多维度信息,包括:

9、以待测软件系统源代码的根目录作为输入,运行jar工具包,得到待测软件系统依赖模型;

10、以待测软件系统源代码的根目录和git日志文件作为输入,运行jar工具包,得到待测软件系统代码历史变化信息;

11、以待测软件系统源代码的根目录作为输入,运行jar工具包,得到待测软件系统代码度量信息。

12、优选地,所述分别提取待测软件系统中代码实体的多维度特征,其中提取语义信息特征,包括:

13、解析所述依赖模型的文件,获得代码实体名称和代码实体分类;

14、根据词性,将所述代码实体名称分割为词组;

15、分别将所述词组和所述代码实体分类转换为数字化的向量;

16、拼接词组的向量和代码实体的向量,得到拼接向量;

17、以所述拼接向量作为卷积神经网络的输入,得到代码实体的语义信息特征。

18、优选地,所述分别提取待测软件系统中代码实体的多维度特征,其中提取依赖信息特征,包括:

19、解析所述依赖模型的文件,获得代码实体名称和代码实体依赖关系;

20、根据所述代码实体名称和所述代码实体依赖关系,得到依赖信息矩阵;

21、以所述依赖信息矩阵作为卷积神经网络的输入,得到代码实体的依赖信息特征。

22、优选地,所述分别提取待测软件系统中代码实体的多维度特征,其中提取历史信息特征,包括:

23、根据所述代码历史变化信息,构造代码实体的共同变更关系矩阵和变更频率矩阵;

24、以所述共同变更关系矩阵和所述变更频率矩阵作为神经网络模型的输入,得到代码实体的历史信息特征。

25、优选地,所述分别提取待测软件系统中代码实体的多维度特征,其中提取度量信息特征,包括:

26、根据所述代码度量信息,得到度量信息矩阵;

27、以所述度量信息矩阵作为神经网络模型的输入,得到度量信息特征。

28、优选地,所述神经网络预测模型中还引入有多头注意力机制。

29、第二方面,本申请提出一种反模式检测系统,包括:

30、信息获取模块,用于获取待测软件系统的多维度信息;所述多维度信息包括待测软件系统的依赖模型、代码历史变化信息和代码度量信息;

31、特征提取模块,用于根据所述多维度信息,分别提取待测软件系统中代码实体的多维度特征;所述多维度特征包括语义信息特征、依赖信息特征、历史信息特征和度量信息特征;

32、反模式预测模块,用于将所述多维度特征输入至神经网络预测模型,确定代码实体所在依赖子图存在反模式的概率;

33、反模式确定模块,对所述概率大于预设值的依赖子图所涉及的实体代码和依赖进行子图搜索,确定存在的反模式种类和数量。

34、第三方面,本申请提出一种存储介质,所述存储介质存储有指令集,其中,所述指令集被处理器执行时实现上述的反模式检测方法。

35、第四方面,本申请提出一种电子设备,包括:

36、存储器,用于存储至少一组指令集;

37、处理器,用于执行所述存储器中存储的指令集,通过执行所述指令集实现上述的反模式检测方法。

38、与现有技术相比,本申请具有以下有益效果:

39、本申请提出一种反模式检测方法,较现有反模式检测方法,获取包括待测软件系统的依赖模型、代码历史变化信息和代码度量信息的多维度信息,提取包括语义信息特征、依赖信息特征、历史信息特征和度量信息特征,拼接多维度特征,通过神经网络预测模型预测存在反模式的概率,再借助子图结合确定反模式种类和数量。本申请考虑了待测软件系统的多维度信息,相较于目前仅考虑单一维度信息的反模式检测方法考虑的信息更加全面,尤其是在工业场景下,检测结果的假阳率大幅降低,提高了检测准确性。另外,结合深度学习和子图搜索的方法,检测效率高,同时,借助这样的组合式方法,进一步提高了检测准确率。

40、本申请还提出了一种反模式检测方法、电子设备和存储介质,具备上述检测方法的全部优势。

本文档来自技高网...

【技术保护点】

1.一种反模式检测方法,其特征在于,包括:

2.根据权利要求1所述反模式检测方法,其特征在于,所述获取待测软件系统的多维度信息,包括:

3.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取语义信息特征,包括:

4.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取依赖信息特征,包括:

5.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取历史信息特征,包括:

6.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取度量信息特征,包括:

7.根据权利要求1所述反模式检测方法,其特征在于,所述神经网络预测模型中还引入有多头注意力机制。

8.一种反模式检测系统,其特征在于,包括:

9.一种存储介质,其特征在于,所述存储介质存储有指令集,其中,所述指令集被处理器执行时实现如权利要求1-7任意一项所述的反模式检测方法。

10.一种电子设备,其特征在于,包括:

...

【技术特征摘要】

1.一种反模式检测方法,其特征在于,包括:

2.根据权利要求1所述反模式检测方法,其特征在于,所述获取待测软件系统的多维度信息,包括:

3.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取语义信息特征,包括:

4.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,其中提取依赖信息特征,包括:

5.根据权利要求1所述反模式检测方法,其特征在于,所述分别提取待测软件系统中代码实体的多维度特征,...

【专利技术属性】
技术研发人员:晋武侠商娇薇杨子江
申请(专利权)人:交叉信息核心技术研究院西安有限公司
类型:发明
国别省市:

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

1