一种基于知识图谱的软件缺陷诊断方法、系统及介质

摘要: 本发明涉及软件缺陷分析与智能诊断,具体涉及一种基于知识图谱的软件缺陷诊断方法、系统及介质。背景技术:1、随着软件系统规模不断扩大,软件内部的模块调用关系、数据依...
一种基于知识图谱的软件缺陷诊断方法、系统及介质

本发明涉及软件缺陷分析与智能诊断,具体涉及一种基于知识图谱的软件缺陷诊断方法、系统及介质。

背景技术:

1、随着软件系统规模不断扩大,软件内部的模块调用关系、数据依赖关系、控制依赖关系及版本演化关系日益复杂,软件运行过程中产生的异常往往涉及多个函数、代码语句和执行环节。软件缺陷不仅会表现为运行日志异常、测试用例失败或异常堆栈信息,还可能沿代码调用链和数据依赖链向下游传播,产生多个相互关联的异常现象。因此,仅依据单一日志记录、单个测试结果或局部代码特征,难以准确区分缺陷根因与级联异常。

2、现有软件缺陷诊断方法通常采用静态代码分析、动态日志分析、测试结果比对或机器学习分类等方式。静态代码分析能够识别潜在代码风险,但难以反映软件实际运行状态;日志分析依赖预设规则和关键词,面对日志格式变化、异常信息缺失或多个缺陷症状相似的情况时,容易出现误判;基于机器学习的诊断方法虽然能够提取数据特征,但通常将不同来源的数据转化为相对独立的特征向量,难以完整表达软件实体、缺陷症状、运行事件、版本变更及历史修复措施之间的多关系关联。

3、部分现有技术采用知识图谱组织软件缺陷知识,通过实体和关系描述软件模块、函数、异常事件及缺陷原因之间的联系。然而,不同来源证据的完整程度、产生时间、所属软件版本及可靠程度存在差异,现有知识图谱诊断方法通常对不同证据和关系采用相同权重,容易使低可信度日志、过期版本数据或偶然共现关系干扰诊断结果。同时,传统图神经网络在进行关系消息传播时,通常未充分考虑软件版本兼容性及目标缺陷对应的代码范围,使其他版本或无关代码区域的信息被传播至当前诊断对象。

4、因此,如何提供一种基于知识图谱的软件缺陷诊断方法、系统及介质是本领域技术人员亟需解决的问题。

技术实现思路

1、本发明的一个目的在于提出一种基于知识图谱的软件缺陷诊断方法、系统及介质,本发明通过处理目标软件的代码分析数据、运行日志数据、测试数据、版本变更数据及历史缺陷数据,构建包含来源映射关系、证据实体节点置信度和关系边置信度的可信软件缺陷知识图谱;利用改进的compgcn软件缺陷关联诊断模型生成正向实体关系组合消息、反向实体关系组合消息及自连接消息,根据消息可信权重实施加权,并结合目标软件版本和目标缺陷关联软件实体集合进行版本上下文与代码范围双重门控传播;进一步生成版本约束诊断子图,结合代码依赖、事件时序及缺陷传播方向进行多跳推理,计算路径诊断分值、缺陷症状覆盖程度、传播方向一致程度及跨源路径支持一致性,识别级联异常并校正候选根因实体,最终得到根因实体排序结果、缺陷定位结果和缺陷诊断报告,从而提高复杂软件环境下缺陷根因诊断、代码位置定位及诊断路径解释的准确性。

2、根据本发明实施例的一种基于知识图谱的软件缺陷诊断方法、系统及介质,包括如下步骤:

3、s1、采集目标软件的代码分析、运行日志、测试、版本变更及历史缺陷数据,经时间、实体和版本标识处理,得到两类缺陷证据集、目标软件版本及目标缺陷发生时间;

4、s2、根据两类缺陷证据集建立软件、缺陷和证据实体及实体间关系,构建可信软件缺陷知识图谱,并得到目标缺陷关联软件实体集合;

5、s3、将目标缺陷证据集和可信软件缺陷知识图谱输入改进的compgcn软件缺陷关联诊断模型,对三类消息进行可信加权和双重门控传播,得到候选根因实体集及根因匹配分值;

6、s4、根据目标缺陷证据集、目标软件版本、目标缺陷关联软件实体集合及候选根因实体集确定诊断传播范围,生成版本约束诊断子图;

7、s5、在版本约束诊断子图中结合代码依赖、事件时序和缺陷传播方向进行多跳推理,得到候选诊断路径、路径诊断分值、缺陷症状覆盖程度及传播方向一致程度;

8、s6、计算跨源路径支持一致性,根据各路径评价结果识别级联异常并校正候选根因实体,得到根因实体排序结果和缺陷定位结果;

9、s7、根据根因实体排序结果、缺陷定位结果及候选诊断路径生成缺陷诊断报告,接收诊断确认结果并更新可信软件缺陷知识图谱。

10、可选的,所述s2包括如下步骤:

11、s21、将软件模块、类、函数及代码语句构建为软件实体节点,将缺陷症状、缺陷原因及修复措施构建为缺陷实体节点;

12、s22、将静态分析结果、异常运行事件、失败测试用例及版本变更记录构建为证据实体节点,并建立各实体节点之间的关系边;

13、s23、关系边包括调用、包含、数据依赖、控制依赖、执行、测试覆盖、修改、触发、传播、归因及修复关系边;

14、s24、根据代码、事件、版本及缺陷标识,建立各来源证据与实体节点及关系边之间的来源映射关系;

15、s25、根据来源映射关系将目标缺陷证据集中的证据映射至对应软件实体节点,得到目标缺陷关联软件实体集合;

16、s26、计算证据实体节点置信度和关系边置信度,将对应置信度写入证据实体节点和关系边,形成可信软件缺陷知识图谱。

17、可选的,所述s3包括如下步骤:

18、s31、根据实体节点类型及其代码、证据、时间和版本属性生成实体节点初始表征,并根据关系类型和传播方向生成关系边初始表征;

19、s32、通过实体关系组合算子生成正向实体关系组合消息和反向实体关系组合消息,并根据实体节点初始表征生成自连接消息;

20、s33、根据来源映射关系确定正向、反向消息对应的节点和关系边置信度,并聚合对应实体的来源证据置信度确定自连接消息可信权重;

21、s34、根据目标软件版本、目标缺陷关联软件实体集合及消息可信权重,对三类消息进行版本上下文与代码范围双重门控;

22、s35、聚合门控关联消息生成目标缺陷关联表征,计算其与缺陷原因实体表征的匹配程度,得到候选根因实体集及根因匹配分值。

23、可选的,所述s34包括如下步骤:

24、s341、根据来源映射关系及消息涉及实体的版本标识确定消息对应软件版本,并结合目标软件版本计算版本兼容系数;

25、s342、根据来源映射关系及可信软件缺陷知识图谱中的实体间关系,确定各类消息直接涉及或间接关联的软件实体;

26、s343、根据关联软件实体与目标缺陷关联软件实体集合之间的调用可达性、数据依赖程度及控制依赖程度,计算代码范围关联系数;

27、s344、融合版本兼容系数、代码范围关联系数及消息可信权重,得到正向、反向及自连接消息对应的传播门控系数;

28、s345、利用传播门控系数调整正向、反向及自连接消息的传播强度,形成门控关联消息集合。

29、可选的,所述s4包括如下步骤:

30、s41、将目标缺陷对应的缺陷症状实体、异常运行事件实体及失败测试用例实体作为诊断起始实体,将候选根因实体作为诊断目标实体;

31、s42、从诊断起始实体沿调用、数据依赖、控制依赖、执行、修改、触发、传播及归因关系向诊断目标实体进行邻域扩展;

32、s43、根据扩展路径中的节点和关系边置信度计算累计置信度,并根据关联软件实体之间的代码依赖可达性确定诊断传播边界;

33、s44、删除超出诊断传播边界或与目标软件版本不兼容的实体节点和关系边,保留相关关联结构,生成版本约束诊断子图。

34、可选的,所述s5包括如下步骤:

35、s51、在版本约束诊断子图中搜索由诊断起始实体指向候选根因实体的多跳关联路径,形成初始诊断路径集合;

36、s52、比较路径中的代码调用、数据依赖、控制依赖及缺陷传播方向,计算传播方向一致程度,并删除传播方向相反的路径;

37、s53、根据异常运行事件、测试失败、代码修改及目标缺陷的发生时间,删除不满足事件时序约束的初始诊断路径;

38、s54、根据路径中的节点和关系边置信度计算路径累计置信度,根据路径跳数及症状实体覆盖比例计算路径长度衰减程度和缺陷症状覆盖程度;

39、s55、融合路径累计置信度、根因匹配分值、路径长度衰减程度、缺陷症状覆盖程度及传播方向一致程度,得到候选诊断路径及路径诊断分值。

40、可选的,所述s6包括如下步骤:

41、s61、根据候选根因实体的根因匹配分值及其对应候选诊断路径的路径诊断分值,计算候选根因实体的基础诊断分值;

42、s62、比较候选根因实体关联的软件实体、软件版本及传播方向,将版本不兼容或传播方向相反的候选根因实体划分为根因冲突组;

43、s63、根据来源映射关系提取候选诊断路径中的四类来源证据,形成路径证据子集并计算跨源路径支持一致性;

44、s64、根据跨源路径支持一致性、缺陷症状覆盖程度及传播方向一致程度识别级联异常,并校正根因冲突组内的基础诊断分值;

45、s65、按照校正后的诊断分值对候选根因实体排序,并根据排名第一实体对应的最高分路径确定软件模块、函数或代码语句的缺陷定位结果。

46、可选的,所述s64包括如下步骤:

47、s641、从路径证据子集中提取支持当前候选根因实体的支持证据及指向其他候选根因实体的冲突证据;

48、s642、根据跨源路径支持一致性、证据来源独立程度、缺陷症状覆盖程度及传播方向一致程度,计算对应的诊断分值增量和减量;

49、s643、根据候选根因实体及下游异常实体各自关联软件实体之间的代码依赖方向和缺陷传播顺序,识别级联异常实体;

50、s644、根据关联软件实体之间的路径跳数及关系边置信度计算级联异常抑制量,结合诊断分值增量和减量得到校正后的诊断分值。

51、根据本发明实施例的一种基于知识图谱的软件缺陷诊断系统,其特征在于,包括如下模块:

52、证据处理模块用于处理目标软件的代码分析、运行日志、测试、版本变更及历史缺陷数据,得到两类缺陷证据集、目标软件版本及目标缺陷发生时间;

53、知识图谱构建模块用于建立来源映射关系,计算节点和关系边置信度,构建可信软件缺陷知识图谱并生成目标缺陷关联软件实体集合;

54、关联诊断模块用于通过改进的compgcn软件缺陷关联诊断模型生成三类消息,并进行可信加权和双重门控传播,得到候选根因实体集及根因匹配分值;

55、诊断子图生成模块用于根据目标缺陷证据集、目标软件版本、目标缺陷关联软件实体集合及候选根因实体集生成版本约束诊断子图;

56、路径推理模块用于结合代码依赖、事件时序及缺陷传播方向进行多跳推理,得到候选诊断路径及对应的路径评价结果;

57、冲突校正模块用于计算跨源路径支持一致性、识别级联异常并校正候选根因实体,得到根因实体排序结果和缺陷定位结果;

58、诊断输出模块用于生成缺陷诊断报告,接收诊断确认结果,并根据诊断确认结果更新可信软件缺陷知识图谱。

59、一种存储介质,其特征在于,介质中存储有可执行指令,可执行指令用于被计算机的处理器读取,以执行权利要求1至8任一项的方法。

60、本发明的有益效果是:本发明通过对代码分析数据、运行日志数据、测试数据、版本变更数据及历史缺陷数据进行统一处理,构建软件实体、缺陷实体和证据实体之间的多关系关联,使软件模块、函数、代码语句、异常运行事件、失败测试用例、缺陷症状及缺陷原因能够在同一知识图谱中进行关联分析,避免单一数据来源难以完整反映缺陷形成及传播过程的问题。

61、本发明通过建立各来源证据与实体节点及关系边之间的来源映射关系,并计算证据实体节点置信度和关系边置信度,能够区分不同证据在完整程度、产生时间、所属版本及来源可靠程度方面的差异,降低缺失证据、过期证据和偶然关联关系对诊断结果的干扰,提高可信软件缺陷知识图谱的准确性及可追溯性。

62、本发明采用改进的compgcn软件缺陷关联诊断模型,对正向实体关系组合消息、反向实体关系组合消息及自连接消息进行可信加权,并结合目标软件版本和目标缺陷关联软件实体集合实施版本上下文与代码范围双重门控。由此能够抑制不兼容软件版本及无关代码区域的信息传播,保留与目标缺陷具有较强关联的实体和关系特征,提高候选根因实体识别的可靠性。

63、本发明根据目标缺陷证据集、目标软件版本、目标缺陷关联软件实体集合及候选根因实体集生成版本约束诊断子图,并结合代码依赖、事件时序及缺陷传播方向进行多跳推理。通过综合路径累计置信度、根因匹配分值、路径长度衰减程度、缺陷症状覆盖程度及传播方向一致程度计算路径诊断分值,能够排除违反软件执行逻辑和时间顺序的无效路径,提高缺陷传播路径分析及代码位置定位的准确性。

64、本发明通过计算静态分析证据、运行日志证据、测试证据及版本变更证据之间的跨源路径支持一致性,对相互冲突的候选根因实体进行校正,并根据代码依赖方向及缺陷传播顺序识别级联异常,避免将下游异常现象错误认定为缺陷根因。最终生成包含根因实体排序结果、缺陷定位结果及候选诊断路径的缺陷诊断报告,使诊断结果能够追溯至对应证据、软件实体和传播关系,并可依据诊断确认结果持续更新可信软件缺陷知识图谱。