CN103678128A - 一种基于抽象解释技术的缺陷警报分组方法及装置 - Google Patents

一种基于抽象解释技术的缺陷警报分组方法及装置 Download PDF

Info

Publication number
CN103678128A
CN103678128A CN201310687844.3A CN201310687844A CN103678128A CN 103678128 A CN103678128 A CN 103678128A CN 201310687844 A CN201310687844 A CN 201310687844A CN 103678128 A CN103678128 A CN 103678128A
Authority
CN
China
Prior art keywords
defect
abstract
node
semantics
alarm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310687844.3A
Other languages
English (en)
Inventor
金大海
宫云战
黄俊飞
王雅文
张大林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201310687844.3A priority Critical patent/CN103678128A/zh
Publication of CN103678128A publication Critical patent/CN103678128A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于抽象解释技术的缺陷警报分组方法,所述方法包括:获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组。本发明同时还公开了一种基于抽象解释技术的缺陷警报分组装置。采用本发明的技术方案,大大减少了部分缺陷警报的识别工作,提高了测试工作效率。

Description

一种基于抽象解释技术的缺陷警报分组方法及装置
技术领域
本发明涉及计算机软件测试技术,具体涉及一种基于抽象解释技术的缺陷警报分组方法及装置。
背景技术
缺陷检测一般包括静态缺陷检测和人工审查两个阶段。静态缺陷检测工具能够检测软件存在的缺陷,并报告相应的缺陷警报。针对静态缺陷检测工具所输出的缺陷警报报告,开发人员需要通过人工审查来逐一判断这一缺陷警报是否属实,或者这一缺陷警报是否足够重要以便需要开发人员修复。
大量的缺陷警报输出,尤其是警报中的误报以及不重要的警报所占的比例过多,就必然会导致开发人员耗费大量的精力去审查缺陷警报报告,进而降低了缺陷检测工具的可用性。通常情况下开发人员有责任对缺陷警报进行评估以判定该警报是否中肯。然而,处理这些缺陷警报的速度通常并不是很高,根据国内多个行业的大型系统的测试经验,一般每人每小时处理的缺陷警报在15至30个之间。如果一个静态缺陷检测工具针对某一软件代码报告了6000个缺陷警报,每一个缺陷警报需要1.5分钟的人工时间来审查,那么一个开发人员需要连续工作18.75天才能全部审查完毕(每天8小时工作),如此耗费了大量的时间和精力。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种基于抽象解释技术的缺陷警报分组方法及装置,能够减少部分缺陷警报的识别工作,提高测试工作效率。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种基于抽象解释技术的缺陷警报分组方法,所述方法包括:
获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;
当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组;
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure BDA0000437368890000021
具体依赖于缺陷警报
Figure BDA0000437368890000022
时,当所述缺陷警报
Figure BDA0000437368890000023
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报
Figure BDA0000437368890000024
抽象依赖于所述缺陷警报
Figure BDA0000437368890000025
其中,所述缺陷警报
Figure BDA0000437368890000026
具体依赖缺陷警报
Figure BDA0000437368890000027
为:当且仅当缺陷警报
Figure BDA0000437368890000028
不发生总能得出缺陷警报不发生,则确定所述缺陷警报
Figure BDA00004373688900000210
具体依赖于所述缺陷警报
Figure BDA00004373688900000211
上述方案中,所述获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义,包括:
当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;
将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
上述方案中,所述在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片,包括:
当程序P的节点l上报告一个缺陷
Figure BDA00004373688900000212
时,在所述节点l上切除所述缺陷
Figure BDA00004373688900000213
对应的错误状态后的状态切片表示为:
其中,为所述缺陷
Figure BDA00004373688900000216
所对应的具体错误状态;
Figure BDA00004373688900000217
表示错误状态的切除操作;
Figure BDA00004373688900000218
为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片
Figure BDA00004373688900000219
的抽象语义表示为
Figure BDA0000437368890000031
其中,为缺陷所对应的可靠的抽象错误状态;表示可靠的抽象的错误状态的切除操作;
Figure BDA0000437368890000035
为抽象域下所述程序P的抽象语义。
上述方案中,所述将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义,包括:
当输入的程序点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为:
Figure BDA0000437368890000036
其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure BDA0000437368890000037
为程序变量集合;
Figure BDA0000437368890000038
表示所有变量的取值集合;
将缺陷警报所在的程序点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure BDA0000437368890000039
其中,
Figure BDA00004373688900000310
为所有缺陷警报发生节点;
则缺陷踪迹
Figure BDA00004373688900000311
的求精语义
Figure BDA00004373688900000312
表示为:
其中,l表示程序点;
Figure BDA00004373688900000314
表示l点的错误状态切片;
Figure BDA00004373688900000315
表示变量集合
Figure BDA00004373688900000316
下的具体语义函数;∩表示求精操作;
Figure BDA00004373688900000317
是对
Figure BDA00004373688900000318
的可靠抽象时,所述
Figure BDA00004373688900000319
Figure BDA00004373688900000320
满足如下表达式:
Figure BDA00004373688900000321
其中,为切除错误状态后的状态切片;
Figure BDA00004373688900000323
表示在状态切片中变量x的取值;
Figure BDA00004373688900000324
表示切除错误状态后的状态切片满足映射函数δ;
Figure BDA00004373688900000325
表示程序点l的错误状态切片;
Figure BDA00004373688900000326
是对
Figure BDA00004373688900000327
的可靠抽象;
Figure BDA00004373688900000328
表示
Figure BDA00004373688900000329
下的具体语义函数;则表明语义可靠性;
所述缺陷踪迹
Figure BDA00004373688900000330
的求精语义
Figure BDA00004373688900000331
的抽象语义
Figure BDA00004373688900000332
表示为:
Figure BDA00004373688900000333
其中,是对
Figure BDA00004373688900000335
的可靠抽象,即
Figure BDA00004373688900000336
其中,
Figure BDA0000437368890000041
表示最小不动点语义;
Figure BDA0000437368890000042
表示错误点的抽象值;
Figure BDA00004373688900000413
表示抽象交运算。
上述方案中,所述获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义之后,所述方法还包括:
更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,更新所有的求精的抽象状态;
将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
上述方案中,所述方法还包括:
根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报时,确定所述另一个缺陷警报也为误报;
当确定所述缺陷警报为真实时,确定所述另一个缺陷警报也为真实。
本发明实施例还提供了一种基于抽象解释技术的缺陷警报分组装置,所述装置包括:获取单元和分组单元;其中,
所述获取单元,用于获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;
所述分组单元,用于当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组;
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure BDA0000437368890000043
具体依赖于缺陷警报
Figure BDA0000437368890000044
时,当所述缺陷警报
Figure BDA00004373688900000414
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报
Figure BDA0000437368890000045
抽象依赖于所述缺陷警报
Figure BDA0000437368890000046
其中,所述缺陷警报
Figure BDA0000437368890000047
具体依赖缺陷警报
Figure BDA0000437368890000048
为:当且仅当缺陷警报
Figure BDA0000437368890000049
不发生总能得出缺陷警报
Figure BDA00004373688900000410
不发生,则确定所述缺陷警报
Figure BDA00004373688900000411
具体依赖于所述缺陷警报
Figure BDA00004373688900000412
上述方案中,所述装置还包括状态切片单元,用于当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
上述方案中,所述状态切片单元,具体用于当程序P的节点l上报告一个缺陷
Figure BDA0000437368890000051
时,切除所述缺陷
Figure BDA0000437368890000052
所对应的错误状态后的状态切片表示为:
Figure BDA0000437368890000053
其中,
Figure BDA0000437368890000054
为所述缺陷
Figure BDA0000437368890000055
所对应的具体错误状态;表示错误状态的切除操作;
Figure BDA00004373688900000527
为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片的抽象语义表示为
Figure BDA0000437368890000057
其中,为缺陷
Figure BDA0000437368890000059
所对应的可靠的抽象错误状态;
Figure BDA00004373688900000510
表示可靠的抽象的错误状态的切除操作;为抽象域下所述程序P的抽象语义。
上述方案中,所述状态切片单元,具体还用于当输入的节点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure BDA00004373688900000513
为程序变量集合;
Figure BDA00004373688900000514
表示所有变量的取值集合;
将缺陷警报所在的节点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure BDA00004373688900000515
其中,
Figure BDA00004373688900000516
为所有缺陷警报发生节点;
则缺陷踪迹
Figure BDA00004373688900000517
的求精语义
Figure BDA00004373688900000518
表示为:
Figure BDA00004373688900000519
其中,l表示程序点;δF(l)表示l点的错误状态切片;表示变量集合
Figure BDA00004373688900000521
下的具体语义函数;∩表示求精操作;
是对的可靠抽象时,所述
Figure BDA00004373688900000524
Figure BDA00004373688900000525
满足如下表达式:
Figure BDA00004373688900000526
其中,
Figure BDA0000437368890000061
为切除错误状态后的状态切片;
Figure BDA0000437368890000062
表示在状态切片中变量x的取值;
Figure BDA0000437368890000063
表示切除错误状态后的状态切片满足映射函数δ;
Figure BDA0000437368890000064
表示程序点l的错误状态切片;
Figure BDA0000437368890000065
是对
Figure BDA0000437368890000066
的可靠抽象;表示
Figure BDA0000437368890000068
下的具体语义函数;
Figure BDA00004373688900000618
则表明语义可靠性;
所述缺陷踪迹
Figure BDA0000437368890000069
的求精语义的抽象语义表示为:
Figure BDA00004373688900000612
其中,是对
Figure BDA00004373688900000614
的可靠抽象,即
Figure BDA00004373688900000615
其中,
Figure BDA00004373688900000616
表示最小不动点语义;
Figure BDA00004373688900000617
表示错误点的抽象值;
Figure BDA00004373688900000619
表示抽象交运算。
上述方案中,所述装置还包括更新单元,用于更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,更新所有的求精的抽象状态;将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
上述方案中,所述装置还包括确定单元,用于根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报时,确定所述另一个缺陷警报也为误报;当确定所述缺陷警报为真实时,确定所述另一个缺陷警报也为真实。
本发明实施例提供的基于抽象解释技术的缺陷警报分组方法及装置,通过获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组,如此,大大减少了部分缺陷警报的识别工作,提高了测试工作效率。
附图说明
图1为本发明实施例的基于抽象解释技术的缺陷警报分组方法的流程示意图;
图2为本发明另一实施例的基于抽象解释技术的缺陷警报分组方法的流程示意图;
图3为本发明实施例的基于抽象解释技术的缺陷警报分组装置的组成结构示意图。
具体实施方式
本发明实施例的基本思想是:依据抽象解释技术确定缺陷警报间的依赖关系,根据所述依赖关系对缺陷警报进行分组;其中,所述依据抽象解释技术确定缺陷警报间的依赖关系为:
在程序P中,当通过静态分析工具报告两个缺陷
Figure BDA0000437368890000071
Figure BDA0000437368890000072
确定缺陷
Figure BDA0000437368890000073
抽象关联于缺陷
Figure BDA0000437368890000074
当且仅当缺陷
Figure BDA0000437368890000075
在求精的抽象语义下不被所述静态分析工具报告,则确定缺陷
Figure BDA0000437368890000076
抽象依赖于缺陷
Figure BDA0000437368890000077
记为
Figure BDA0000437368890000078
其中,确定缺陷
Figure BDA00004373688900000723
抽象关联于缺陷
Figure BDA0000437368890000079
为:当且仅当若缺陷
Figure BDA00004373688900000710
不发生总能得出
Figure BDA00004373688900000711
也不发生,则确定
Figure BDA00004373688900000712
依赖于
Figure BDA00004373688900000713
记为
Figure BDA00004373688900000714
如此,当确定缺陷
Figure BDA00004373688900000715
抽象依赖于缺陷
Figure BDA00004373688900000716
时,确定缺陷
Figure BDA00004373688900000717
为误报,则可以确定缺陷
Figure BDA00004373688900000718
也为误报;或者确定缺陷
Figure BDA00004373688900000719
为真实,则可以确定缺陷
Figure BDA00004373688900000720
也为真实;其中,缺陷
Figure BDA00004373688900000721
为主导缺陷;缺陷
Figure BDA00004373688900000722
为从属缺陷;当缺陷警报间的依赖关系更大,则只需确定其中的主导缺陷是否为误报或者真实缺陷,便可获得所有从属缺陷是否为误报或真实,大大减少了部分缺陷警报的识别工作,提高了工作效率。
下面结合附图及具体实施例对本发明作进一步详细的说明。
图1为本发明基于抽象解释技术的缺陷警报分组方法的流程示意图,如图1所示,包括以下步骤:
步骤101:获取函数控制流图上节点的抽象语义。
具体的,获取当前程序路径上控制流图节点n的抽象语义,将所述抽象语义存储在临时程序状态temp中。
步骤102:获取函数控制流图上所述节点的求精的抽象语义。
具体的,获取当前程序路径上控制流图节点n的前驱节点的求精的抽象语义,将所述求精的抽象语义存储在求精的抽象语义集合RS中。
步骤103:当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组。
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure BDA0000437368890000081
具体依赖于缺陷警报
Figure BDA0000437368890000082
时,当所述缺陷警报
Figure BDA0000437368890000083
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报
Figure BDA0000437368890000084
抽象依赖于所述缺陷警报
Figure BDA0000437368890000085
其中,所述缺陷警报
Figure BDA0000437368890000086
具体依赖缺陷警报
Figure BDA0000437368890000087
为:当且仅当缺陷警报
Figure BDA0000437368890000088
不发生总能得出缺陷警报
Figure BDA0000437368890000089
不发生,则确定所述缺陷警报
Figure BDA00004373688900000810
具体依赖于所述缺陷警报
Figure BDA00004373688900000811
具体的,所述获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义,包括:
当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;
将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
其中,所述在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片,包括:
当程序P的节点l上报告一个缺陷
Figure BDA00004373688900000812
时,在所述节点l上切除所述缺陷
Figure BDA00004373688900000813
对应的错误状态后的状态切片表示为:
Figure BDA00004373688900000814
其中,
Figure BDA00004373688900000815
为缺陷
Figure BDA00004373688900000816
所对应的具体错误状态;
Figure BDA00004373688900000817
表示错误状态的切除操作;
Figure BDA00004373688900000818
为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片
Figure BDA00004373688900000819
的抽象语义表示为
Figure BDA00004373688900000820
其中,
Figure BDA00004373688900000821
为缺陷所对应的可靠的抽象错误状态;表示可靠的抽象的错误状态的切除操作;
Figure BDA0000437368890000091
为抽象域下的程序P的抽象语义。
优选地,所述将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义,包括:
当输入的程序点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为:
其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure BDA0000437368890000093
为程序变量取值集合;
Figure BDA0000437368890000094
表示所有变量的取值集合;
将缺陷警报所在的程序点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure BDA0000437368890000095
其中,
Figure BDA0000437368890000096
为所有缺陷警报发生节点;
则缺陷踪迹
Figure BDA0000437368890000097
的求精语义表示为:
Figure BDA0000437368890000099
其中,l表示程序点;
Figure BDA00004373688900000910
表示l点的错误状态切片;
Figure BDA00004373688900000911
表示变量集合
Figure BDA00004373688900000912
下的具体语义函数;∩表示求精操作;
是对
Figure BDA00004373688900000914
的可靠抽象时,即满足
Figure BDA00004373688900000915
其中,
Figure BDA00004373688900000916
为切除错误状态后的状态切片;
Figure BDA00004373688900000917
表示在状态切片中变量x的取值;
Figure BDA00004373688900000931
表示切除错误状态后的状态切片满足映射函数δ;
Figure BDA00004373688900000932
表示程序点l的错误状态切片;
Figure BDA00004373688900000918
是对
Figure BDA00004373688900000919
的可靠抽象;
Figure BDA00004373688900000920
表示
Figure BDA00004373688900000921
下的具体语义函数;
Figure BDA00004373688900000933
则表明语义可靠性;
则所述缺陷踪迹
Figure BDA00004373688900000922
的求精语义
Figure BDA00004373688900000923
的抽象语义
Figure BDA00004373688900000924
表示为:
Figure BDA00004373688900000925
其中,
Figure BDA00004373688900000926
是对
Figure BDA00004373688900000927
的可靠抽象,即
Figure BDA00004373688900000928
其中,表示最小不动点语义;
Figure BDA00004373688900000930
表示错误点的抽象值;
Figure BDA00004373688900000934
表示抽象交运算。
优选地,所述获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义之后,所述方法还包括:
更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,通过调用数据流更新工具,更新所有的求精的抽象状态;
将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
优选地,所述方法还包括:
根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报,则确定所述另一个缺陷警报也为误报;
当确定所述缺陷警报为真实,则确定所述另一个缺陷警报也为真实。
图2为本发明另一实施例的基于抽象解释技术的缺陷警报分组方法的流程示意图;如图2所示,包括以下步骤:
步骤201:获得一个函数控制流图上的节点n及其前驱节点n’。
具体的,获取当前程序路径上当前控制流图节点n的抽象语义,并将其存储在临时语义temp中;获取当前程序路径上当前控制流图节点n的前驱节点上的求精的抽象语义集合RS。
步骤202:更新程序求精的抽象语义集合RS中的每一个程序的求精的抽象语义。
具体的,将求精的抽象语义集合RS中的每一个程序的求精的抽象语义分别赋给当前节点的抽象语义,并调用缺陷检测工具的数据流更新工具,使得RS中每一个求精的抽象语义得到更新。
将临时语义temp赋给当前节点的程序抽象语义,恢复原有程序抽象语义取值。
步骤203:判断缺陷检测工具是否在当前控制流图节点n上报告一个缺陷警报,当判断的结果为是时,执行步骤204;否则,重新执行步骤201。
步骤204:确定缺陷警报间的抽象依赖关系。
这里,步骤204用于对当前节点所报告的缺陷警报,计算该缺陷警报与所有前驱节点上所报告的缺陷警报之间的依赖关系,所述具体缺陷警报依赖定义为:
在程序P中,给定两个已知缺陷警报
Figure BDA0000437368890000111
且m,n∈L,L为节点集合。当且仅当假设缺陷警报
Figure BDA0000437368890000113
不发生总能得出缺陷警报
Figure BDA0000437368890000114
也不发生,即称
Figure BDA0000437368890000115
依赖于记为
在本发明实施例中,具体缺陷警报依赖分两种情况:
1、给定两个已知缺陷警报
Figure BDA0000437368890000118
Figure BDA0000437368890000119
如果缺陷警报
Figure BDA00004373688900001110
为误报总能得出缺陷警报
Figure BDA00004373688900001111
也为误报,即称
Figure BDA00004373688900001112
依赖于
Figure BDA00004373688900001113
记做:
Figure BDA00004373688900001114
(即只判定
Figure BDA00004373688900001115
即可)。
2、给定两个已知缺陷警报
Figure BDA00004373688900001116
如果缺陷警报
Figure BDA00004373688900001118
为真实缺陷总能得出
Figure BDA00004373688900001119
缺陷警报也为真实缺陷,即称
Figure BDA00004373688900001120
依赖于
Figure BDA00004373688900001121
记做:
Figure BDA00004373688900001122
(即只判定
Figure BDA00004373688900001123
即可)。
在基于抽象解释技术的静态缺陷检测工具,具体缺陷警报依赖通常无法计算,需要用可靠的抽象缺陷警报依赖近似表示。
本发明实施例用程序缺陷警报的抽象依赖关系近似表示警报间的具体依赖关系,缺陷警报抽象依赖的定义为:
在程序P中,当通过静态分析工具报告两个缺陷
Figure BDA00004373688900001124
Figure BDA00004373688900001125
确定缺陷
Figure BDA00004373688900001126
抽象关联于缺陷
Figure BDA00004373688900001127
当且仅当缺陷
Figure BDA00004373688900001128
在求精的抽象语义下不被所述静态分析工具报告,则确定缺陷
Figure BDA00004373688900001129
抽象依赖于缺陷
Figure BDA00004373688900001130
记为
Figure BDA00004373688900001131
依据上述抽象缺陷警报依赖定义,当另一个缺陷警报
Figure BDA00004373688900001132
在程序原抽象语义下被静态缺陷检测工具报告,而在
Figure BDA00004373688900001133
所对应的求精的抽象语义下没有被报告,则说明
Figure BDA00004373688900001134
抽象依赖于
Figure BDA00004373688900001135
本发明实施例在后续过程中,依据当前缺陷警报的依赖关系,对缺陷警报进行分组。
步骤205:在当前缺陷警报下,切掉程序所对应的缺陷状态,并将切片后的程序抽象状态加入程序求精的抽象状态集合RS中。
当程序P的节点l上报告一个缺陷
Figure BDA00004373688900001136
时,在所述节点l上切除所述缺陷
Figure BDA00004373688900001137
对应的错误状态后的状态切片表示为:
Figure BDA00004373688900001138
其中,
Figure BDA0000437368890000121
为所述缺陷
Figure BDA0000437368890000122
所对应的具体错误状态;
Figure BDA0000437368890000123
表示错误状态的切除操作;
Figure BDA0000437368890000124
为程序P的节点l的具体语义;
相应的状态切片的抽象语义可以表示为
Figure BDA0000437368890000125
其中,为缺陷
Figure BDA0000437368890000127
所对应的可靠的抽象错误状态;
Figure BDA0000437368890000128
表示可靠的抽象的错误状态的切除操作;
Figure BDA0000437368890000129
为抽象域下所述程序P的抽象语义。
所述将缺陷警报所在的程序点的状态切片作为一个程序抽象语义的外部约束信息,进而得到所述程序的一个求精的抽象语义包括:
在程序P中,给定一个程序的输入程序点集合Lin={l∈L|l:input(xl)};
其中,L表示所有程序点集合;xl表示在程序点l处的变量x;那么程序的输入可以用一个输入函数,所述输入函数δ表示为:
Figure BDA00004373688900001210
其中,
Figure BDA00004373688900001211
为程序变量取值集合;
Figure BDA00004373688900001212
表示所有变量的取值集合;所述输入函数δ完成了程序点到所述程序点相应变量输入值的映射。
将缺陷警报所在的节点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure BDA00004373688900001213
其中,
Figure BDA00004373688900001214
为所有缺陷警报发生节点。
考虑将缺陷
Figure BDA00004373688900001215
的状态切片
Figure BDA00004373688900001216
所对应的变量取值作为外部输入约束,缺陷踪迹
Figure BDA00004373688900001217
将被进一步求精,缺陷踪迹的求精语义
Figure BDA00004373688900001218
可表示为:
Figure BDA00004373688900001219
Figure BDA00004373688900001220
是对
Figure BDA00004373688900001221
的可靠抽象时,即满足
Figure BDA00004373688900001222
则所述缺陷踪迹
Figure BDA00004373688900001223
的求精语义的抽象语义
Figure BDA00004373688900001225
表示为:
Figure BDA00004373688900001226
其中,是对
Figure BDA00004373688900001228
的可靠抽象,即
Figure BDA00004373688900001229
其中,
Figure BDA00004373688900001230
为切除错误状态后的状态切片;
Figure BDA00004373688900001231
表示状态切片中变量x的取值;
Figure BDA00004373688900001232
表示切除错误状态后的状态切片满足映射函数δ;表示抽象状态具体化;
Figure BDA00004373688900001234
则表明语义可靠性。
其中,
Figure BDA0000437368890000131
表示最小不动点语义;
Figure BDA0000437368890000132
表示错误点的抽象值;
Figure BDA00004373688900001324
表示抽象交运算。
步骤206:判断缺陷检测和缺陷警报依赖计算是否结束。
本发明中缺陷检测结束和缺陷警报关联是指当函数控制流遍历到达出口节点时,标志在当前函数内缺陷检测和缺陷警报依赖计算结束。
如果判断为否,则本发明继续执行步骤201至步骤205。
如果判断为是,则本发明触发警报分组操作,执行步骤207。
步骤207:缺陷警报依赖链生成并依据依赖链进行警报分组。
本发明实施例中步骤201至步骤206是计算缺陷警报之间的两两警报依赖关系。本发明需要将根据两两间的警报依赖关系,形成警报依赖分组。具体的,当缺陷检测工具检测三个缺陷警报
Figure BDA0000437368890000133
Figure BDA0000437368890000134
如果缺陷抽象依赖于缺陷
Figure BDA0000437368890000136
且缺陷
Figure BDA0000437368890000137
抽象依赖于缺陷
Figure BDA0000437368890000138
则可以确定缺陷
Figure BDA0000437368890000139
抽象依赖于缺陷
Figure BDA00004373688900001310
其中,
Figure BDA00004373688900001311
为主导缺陷,
Figure BDA00004373688900001312
为从属缺陷。因此,对多个缺陷警报可以生成缺陷警报依赖链,并根据所述缺陷警报依赖链对所述缺陷警报进行分组。
基于上述方法,本发明实施例还提供了一种基于抽象解释技术的缺陷警报分组装置,如图3所示,所述装置包括:获取单元31和分组单元32;其中,
所述获取单元31,用于获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;
所述分组单元32,用于当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组;
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure BDA00004373688900001314
具体依赖于缺陷警报
Figure BDA00004373688900001315
时,当所述缺陷警报
Figure BDA00004373688900001316
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报
Figure BDA00004373688900001317
抽象依赖于所述缺陷警报
Figure BDA00004373688900001318
其中,所述缺陷警报
Figure BDA00004373688900001319
具体依赖缺陷警报
Figure BDA00004373688900001320
为:当且仅当缺陷警报
Figure BDA00004373688900001321
不发生总能得出缺陷警报
Figure BDA00004373688900001322
不发生,则确定所述缺陷警报
Figure BDA00004373688900001323
具体依赖于所述缺陷警报
Figure BDA0000437368890000141
优选地,所述装置还包括状态切片单元33,用于当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
优选地,所述状态切片单元33,具体用于当程序P的节点l上报告一个缺陷
Figure BDA0000437368890000142
时,切除所述缺陷
Figure BDA0000437368890000143
所对应的错误状态后的状态切片表示为:
其中,
Figure BDA0000437368890000145
为所述缺陷
Figure BDA0000437368890000146
所对应的具体错误状态;表示错误状态的切除操作;
Figure BDA0000437368890000148
为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片的抽象语义表示为
Figure BDA0000437368890000149
其中,
Figure BDA00004373688900001410
为缺陷
Figure BDA00004373688900001411
所对应的可靠的抽象错误状态;
Figure BDA00004373688900001412
表示可靠的抽象的错误状态的切除操作;
Figure BDA00004373688900001413
为抽象域下所述程序P的抽象语义。
优选地,所述状态切片单元33,具体还用于当输入的节点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为:
Figure BDA00004373688900001414
其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure BDA00004373688900001415
为程序变量取值集合;表示所有变量的取值集合;
将缺陷警报所在的节点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure BDA00004373688900001417
其中,
Figure BDA00004373688900001418
为所有缺陷警报发生节点;
则缺陷踪迹
Figure BDA00004373688900001419
的求精语义
Figure BDA00004373688900001420
表示为:
Figure BDA00004373688900001421
其中,l表示程序点;
Figure BDA00004373688900001422
表示l点的错误状态切片;
Figure BDA00004373688900001423
表示变量集合
Figure BDA00004373688900001424
下的具体语义函数;∩表示求精操作;
Figure BDA00004373688900001425
是对
Figure BDA00004373688900001426
的可靠抽象时,所述
Figure BDA00004373688900001427
Figure BDA00004373688900001428
满足如下表达式:
Figure BDA0000437368890000151
其中,
Figure BDA0000437368890000152
为切除错误状态后的状态切片;
Figure BDA0000437368890000153
表示在状态切片中变量x的取值;表示切除错误状态后的状态切片满足映射函数δ;
Figure BDA0000437368890000155
表示程序点l的错误状态切片;
Figure BDA0000437368890000156
是对
Figure BDA0000437368890000157
的可靠抽象;
Figure BDA0000437368890000158
表示
Figure BDA0000437368890000159
下的具体语义函数;
Figure BDA00004373688900001519
则表明语义可靠性;
所述缺陷踪迹
Figure BDA00004373688900001510
的求精语义的抽象语义
Figure BDA00004373688900001512
表示为:
Figure BDA00004373688900001513
其中,
Figure BDA00004373688900001514
是对
Figure BDA00004373688900001515
的可靠抽象,即
Figure BDA00004373688900001516
其中,
Figure BDA00004373688900001517
表示最小不动点语义;
Figure BDA00004373688900001518
表示错误点的抽象值;
Figure BDA00004373688900001520
表示抽象交运算。
优选地,所述装置还包括更新单元34,用于更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,通过调用数据流更新工具,更新所有的求精的抽象状态;将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
优选地,所述装置还包括确定单元35,用于根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报时,确定所述另一个缺陷警报也为误报;当确定所述缺陷警报为真实时,确定所述另一个缺陷警报也为真实。
本领域技术人员应当理解,本发明实施例的基于抽象解释技术的缺陷警报分组装置中各处理单元的功能,可参照前述基于抽象解释技术的缺陷警报分组方法的相关描述而理解,本发明实施例的基于抽象解释技术的缺陷警报分组装置中各处理单元,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件在智能终端上的运行而实现。
其中,所述获取单元31和分组单元32、状态切片单元33、更新单元34和确定单元35在实际应用中,均可由装置中的中央处理器(CPU,CentralProcessing Unit)、数字信号处理器(DSP,Digital Signal Processor)或可编程逻辑阵列(FPGA,Field-Programmable Gate Array)实现。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种基于抽象解释技术的缺陷警报分组方法,其特征在于,所述方法包括:
获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;
当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组;
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure FDA0000437368880000011
具体依赖于缺陷警报
Figure FDA0000437368880000012
时,当所述缺陷警报
Figure FDA0000437368880000013
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报
Figure FDA0000437368880000014
抽象依赖于所述缺陷警报
Figure FDA0000437368880000015
其中,所述缺陷警报
Figure FDA0000437368880000016
具体依赖缺陷警报
Figure FDA0000437368880000017
为:当且仅当缺陷警报
Figure FDA0000437368880000018
不发生总能得出缺陷警报
Figure FDA0000437368880000019
不发生,则确定所述缺陷警报
Figure FDA00004373688800000110
具体依赖于所述缺陷警报
Figure FDA00004373688800000111
2.根据权利要求1所述的方法,其特征在于,所述获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义,包括:
当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;
将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
3.根据权利要求2所述的方法,其特征在于,所述在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片,包括:
当程序P的节点l上报告一个缺陷
Figure FDA00004373688800000112
时,在所述节点l上切除所述缺陷
Figure FDA00004373688800000113
对应的错误状态后的状态切片表示为:
其中,
Figure FDA00004373688800000115
为所述缺陷
Figure FDA00004373688800000116
所对应的具体错误状态;
Figure FDA00004373688800000117
表示错误状态的切除操作;
Figure FDA0000437368880000021
为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片
Figure FDA0000437368880000022
的抽象语义表示为
Figure FDA0000437368880000023
其中,
Figure FDA0000437368880000024
为缺陷
Figure FDA0000437368880000025
所对应的可靠的抽象错误状态;
Figure FDA0000437368880000026
表示可靠的抽象的错误状态的切除操作;
Figure FDA0000437368880000027
为抽象域下所述程序P的抽象语义。
4.根据权利要求2所述的方法,其特征在于,所述将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义,包括:
当输入的程序点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为:
Figure FDA0000437368880000028
其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure FDA0000437368880000029
为程序变量集合;表示所有变量的取值集合;
将缺陷警报所在的程序点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure FDA00004373688800000211
其中,
Figure FDA00004373688800000212
为所有缺陷警报发生节点;
则缺陷踪迹
Figure FDA00004373688800000213
的求精语义
Figure FDA00004373688800000214
表示为:
其中,l表示程序点;
Figure FDA00004373688800000216
表示l点的错误状态切片;
Figure FDA00004373688800000217
表示变量集合
Figure FDA00004373688800000218
下的具体语义函数;∩表示求精操作;
Figure FDA00004373688800000219
是对
Figure FDA00004373688800000220
的可靠抽象时,所述满足如下表达式:
Figure FDA00004373688800000223
其中,为切除错误状态后的状态切片;
Figure FDA00004373688800000225
表示在状态切片中变量x的取值;
Figure FDA00004373688800000226
表示切除错误状态后的状态切片满足映射函数δ;
Figure FDA00004373688800000227
表示程序点l的错误状态切片;是对
Figure FDA00004373688800000229
的可靠抽象;
Figure FDA00004373688800000230
表示
Figure FDA00004373688800000231
下的具体语义函数;
Figure FDA00004373688800000232
则表明语义可靠性;
所述缺陷踪迹
Figure FDA0000437368880000031
的求精语义
Figure FDA0000437368880000032
的抽象语义
Figure FDA0000437368880000033
表示为:
Figure FDA0000437368880000034
其中,
Figure FDA0000437368880000035
是对
Figure FDA0000437368880000036
的可靠抽象,即
Figure FDA0000437368880000037
其中,
Figure FDA0000437368880000038
表示最小不动点语义;
Figure FDA0000437368880000039
表示错误点的抽象值;
Figure FDA00004373688800000315
表示抽象交运算。
5.根据权利要求1所述的方法,其特征在于,所述获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点及所述节点的前驱节点的求精的抽象语义之后,所述方法还包括:
更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,更新所有的求精的抽象状态;
将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报时,确定所述另一个缺陷警报也为误报;
当确定所述缺陷警报为真实时,确定所述另一个缺陷警报也为真实。
7.一种基于抽象解释技术的缺陷警报分组装置,其特征在于,所述装置包括:获取单元和分组单元;其中,
所述获取单元,用于获取函数控制流图上节点的抽象语义,并获取函数控制流图上所述节点的求精的抽象语义;
所述分组单元,用于当在所述节点上报告一个以上缺陷警报时,依据所述缺陷警报间的抽象依赖关系,对所述缺陷警报进行分组;
其中,所述缺陷警报间的抽象依赖关系为:当缺陷警报
Figure FDA00004373688800000310
具体依赖于缺陷警报
Figure FDA00004373688800000311
时,当所述缺陷警报
Figure FDA00004373688800000312
在对应的抽象语义下被报告,而在对应的求精的抽象语义下没有被报告时,则确定所述缺陷警报抽象依赖于所述缺陷警报
Figure FDA00004373688800000314
其中,所述缺陷警报
Figure FDA0000437368880000041
具体依赖缺陷警报
Figure FDA0000437368880000042
为:当且仅当缺陷警报
Figure FDA0000437368880000043
不发生总能得出缺陷警报不发生,则确定所述缺陷警报
Figure FDA0000437368880000045
具体依赖于所述缺陷警报
Figure FDA0000437368880000046
8.根据权利要求7所述的装置,其特征在于,所述装置还包括状态切片单元,用于当报告一个缺陷警报时,在所述缺陷警报所在节点上切除所述节点的错误状态,获得所述节点的状态切片;将所述节点的状态切片作为所述抽象语义的外部约束信息,获得所述节点的求精的抽象语义。
9.根据权利要求8所述的装置,其特征在于,所述状态切片单元,具体用于当程序P的节点l上报告一个缺陷
Figure FDA0000437368880000047
时,切除所述缺陷
Figure FDA0000437368880000048
所对应的错误状态后的状态切片表示为:
Figure FDA0000437368880000049
其中,为所述缺陷
Figure FDA00004373688800000411
所对应的具体错误状态;
Figure FDA00004373688800000412
表示错误状态的切除操作;为程序P的节点l的具体语义;
获得所述节点的状态切片,所述状态切片的抽象语义表示为
Figure FDA00004373688800000414
其中,
Figure FDA00004373688800000415
为缺陷
Figure FDA00004373688800000416
所对应的可靠的抽象错误状态;表示可靠的抽象的错误状态的切除操作;
Figure FDA00004373688800000418
为抽象域下所述程序P的抽象语义。
10.根据权利要求8所述的装置,其特征在于,所述状态切片单元,具体还用于当输入的节点集合Lin为:Lin={l∈L|l:input(xl)}时,确定输入函数δ表示为:其中,L表示所有程序点集合;xl表示在程序点l处的变量x;
Figure FDA00004373688800000419
为程序变量集合;
Figure FDA00004373688800000420
表示所有变量的取值集合;
将缺陷警报所在的节点的状态切片作为程序抽象语义的外部约束信息,替换原有程序错误状态,则所述输入的节点集合Lin为:
Figure FDA00004373688800000421
其中,
Figure FDA00004373688800000422
为所有缺陷警报发生节点;
则缺陷踪迹
Figure FDA00004373688800000423
的求精语义
Figure FDA00004373688800000424
表示为:
Figure FDA00004373688800000425
其中,l表示程序点;δF(l)表示l点的错误状态切片;表示变量集合
Figure FDA00004373688800000427
下的具体语义函数;∩表示求精操作;
Figure FDA0000437368880000051
是对
Figure FDA0000437368880000052
的可靠抽象时,所述
Figure FDA0000437368880000053
Figure FDA0000437368880000054
满足如下表达式:
Figure FDA0000437368880000055
其中,
Figure FDA0000437368880000056
为切除错误状态后的状态切片;
Figure FDA0000437368880000057
表示在状态切片中变量x的取值;
Figure FDA0000437368880000058
表示切除错误状态后的状态切片满足映射函数δ;表示程序点l的错误状态切片;
Figure FDA00004373688800000510
是对
Figure FDA00004373688800000511
的可靠抽象;
Figure FDA00004373688800000512
表示
Figure FDA00004373688800000513
下的具体语义函数;则表明语义可靠性;
所述缺陷踪迹
Figure FDA00004373688800000514
的求精语义
Figure FDA00004373688800000515
的抽象语义
Figure FDA00004373688800000516
表示为:
Figure FDA00004373688800000517
其中,
Figure FDA00004373688800000518
是对
Figure FDA00004373688800000519
的可靠抽象,即
其中,
Figure FDA00004373688800000521
表示最小不动点语义;
Figure FDA00004373688800000522
表示错误点的抽象值;
Figure FDA00004373688800000524
表示抽象交运算。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括更新单元,用于更新所有程序的求精的抽象状态,具体包括:将获取的每一个求精的抽象语义分别赋给对应节点的抽象语义,更新所有的求精的抽象状态;将所述节点的抽象语义分别赋给对应节点的程序抽象状态,恢复原有函数抽象状态取值。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括确定单元,用于根据当前缺陷警报的依赖关系,当确定所述缺陷警报为误报时,确定所述另一个缺陷警报也为误报;当确定所述缺陷警报为真实时,确定所述另一个缺陷警报也为真实。
CN201310687844.3A 2013-12-13 2013-12-13 一种基于抽象解释技术的缺陷警报分组方法及装置 Pending CN103678128A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310687844.3A CN103678128A (zh) 2013-12-13 2013-12-13 一种基于抽象解释技术的缺陷警报分组方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310687844.3A CN103678128A (zh) 2013-12-13 2013-12-13 一种基于抽象解释技术的缺陷警报分组方法及装置

Publications (1)

Publication Number Publication Date
CN103678128A true CN103678128A (zh) 2014-03-26

Family

ID=50315762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310687844.3A Pending CN103678128A (zh) 2013-12-13 2013-12-13 一种基于抽象解释技术的缺陷警报分组方法及装置

Country Status (1)

Country Link
CN (1) CN103678128A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897678A (zh) * 2018-06-20 2018-11-27 中国联合网络通信集团有限公司 静态代码检测方法和静态代码检测系统、存储设备
CN110175123A (zh) * 2019-05-22 2019-08-27 中国石油大学(华东) 一种基于符号表达式静态缺陷警报关联识别方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286132A (zh) * 2008-06-02 2008-10-15 北京邮电大学 一种基于软件缺陷模式的测试方法及系统
CN102110051A (zh) * 2010-12-31 2011-06-29 北京邮电大学 应用程序切片技术的静态缺陷检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286132A (zh) * 2008-06-02 2008-10-15 北京邮电大学 一种基于软件缺陷模式的测试方法及系统
CN102110051A (zh) * 2010-12-31 2011-06-29 北京邮电大学 应用程序切片技术的静态缺陷检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DALIN ZHANG等: ""Diagnosis-Oriented Alarm Correlations"", 《2013 20TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE》, vol. 1, 5 December 2013 (2013-12-05), XP032591266, DOI: doi:10.1109/APSEC.2013.33 *
赵云山等: ""提高路径敏感缺陷检测方法的效率及精度研究"", 《计算机学报》, vol. 34, no. 6, 30 June 2011 (2011-06-30) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897678A (zh) * 2018-06-20 2018-11-27 中国联合网络通信集团有限公司 静态代码检测方法和静态代码检测系统、存储设备
CN108897678B (zh) * 2018-06-20 2021-10-15 中国联合网络通信集团有限公司 静态代码检测方法和静态代码检测系统、存储设备
CN110175123A (zh) * 2019-05-22 2019-08-27 中国石油大学(华东) 一种基于符号表达式静态缺陷警报关联识别方法

Similar Documents

Publication Publication Date Title
CN109522192B (zh) 一种基于知识图谱和复杂网络组合的预测方法
CN110995482B (zh) 告警分析方法、装置、计算机设备及计算机可读存储介质
CN111158977A (zh) 一种异常事件根因定位方法及装置
CN111814999B (zh) 一种故障工单生成方法、装置、设备
US9524223B2 (en) Performance metrics of a computer system
CN111949480B (zh) 一种基于组件感知的日志异常检测方法
CN114567538A (zh) 告警信息处理方法及装置
CN115033463B (zh) 一种系统异常类型确定方法、装置、设备和存储介质
CN114461534A (zh) 软件性能测试方法、系统、电子设备及可读存储介质
CN114595210A (zh) 一种多维数据的异常检测方法、装置及电子设备
CN101626275A (zh) 一种系统故障检测的方法及装置
CN109818808B (zh) 故障诊断方法、装置和电子设备
CN108039971A (zh) 一种告警方法及装置
CN115102844A (zh) 一种故障监控与处理方法、装置和电子设备
CN103678128A (zh) 一种基于抽象解释技术的缺陷警报分组方法及装置
CN112769615A (zh) 一种异常分析方法及装置
CN112799919A (zh) 数据监控方法、装置、设备及计算机存储介质
CN116032725B (zh) 故障根因定位模型的生成方法及装置
CN112087320A (zh) 一种异常定位方法、装置、电子设备和可读存储介质
CN111475556A (zh) 一种数据采集方法、设备、服务器及可读存储介质
CN116662058A (zh) 一种故障传播关系的构建方法、装置、设备及存储介质
CN114500249B (zh) 一种根因定位方法和装置
CN114881112A (zh) 一种系统异常检测方法、装置、设备及介质
Kondo et al. Process mining for alarm rationalization and fault patterns identification
CN111880959A (zh) 一种异常检测方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140326