CN114579431A - 一种基于混合分析的除零错误检测方法 - Google Patents
一种基于混合分析的除零错误检测方法 Download PDFInfo
- Publication number
- CN114579431A CN114579431A CN202210100181.XA CN202210100181A CN114579431A CN 114579431 A CN114579431 A CN 114579431A CN 202210100181 A CN202210100181 A CN 202210100181A CN 114579431 A CN114579431 A CN 114579431A
- Authority
- CN
- China
- Prior art keywords
- analysis
- zero
- static analysis
- monitoring point
- current
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 35
- 238000012544 monitoring process Methods 0.000 claims abstract description 61
- 230000003068 static effect Effects 0.000 claims abstract description 57
- 238000006243 chemical reaction Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 14
- 238000003780 insertion Methods 0.000 claims abstract description 11
- 230000037431 insertion Effects 0.000 claims abstract description 11
- 238000004891 communication Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 20
- 238000004088 simulation Methods 0.000 claims description 8
- PENWAFASUFITRC-UHFFFAOYSA-N 2-(4-chlorophenyl)imidazo[2,1-a]isoquinoline Chemical compound C1=CC(Cl)=CC=C1C1=CN(C=CC=2C3=CC=CC=2)C3=N1 PENWAFASUFITRC-UHFFFAOYSA-N 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于混合分析的除零错误检测方法,注册自定义静态分析除零错误检测器,对目标程序进行静态分析检测;使用管道通信,将静态分析模块产生的检测报告传递至动态分析插桩模块;选择除零错误的监测点,设计转换规则;根据静态分析检测报告和转换规则,选择性地插桩监测点,获得混合分析后的报告;生成除零检测接口文件和插桩后的代码文件。本发明依赖Clang编译器提供的静态分析引擎和AST接口完成对静态分析模块和动态分析插桩模块的实现,两模块通过管道进行通信;经过对目标程序混合分析后产生的混合分析报告,具有高可用性和低膨胀率的特点;实现了对C程序中所有除零错误有效的检测,从而提高软件的可靠性和安全性。
Description
技术领域
本发明属于计算机软件领域,特别涉及一种基于混合分析的除零错误检测方法。
背景技术
C语言是编写操作系统和嵌入式软件的主要语言。同时,根据2021年8月TIOBE的报告显示它也是最受欢迎的编程语言。不同于运行在虚拟机上的语言,如Python和Java可以轻松捕捉除零异常,而语言在设计之初就无法捕捉除零错误,并且C标准明确地指出除零对于整数或浮点操作数具有未定义的行为。因此运行存在除零错误的软件时存在非常严重的安全漏洞,在执行除零表达式时,可能产生无意义的结果甚至程序崩溃。静态分析和动态分析技术是目前常用的C程序安全检测技术,但是存在不同程度的缺陷。
静态分析是以不执行目标程序为前提,通过分析静态的程序代码完成检测。它可以在无测试用例的情况下,对程序模拟做到全路径覆盖测试,执行效率较高。但是因为无法收集目标程序运行时状态信息,存在较高的误报率或漏报率,在检测较复杂的程序时,还可能导致路径爆炸等问题,因此并不能作为主要检测工具。
动态分析实现方法是对目标代码进行逻辑地插入,然后在运行时检测程序中可能存在的错误。因为它可以收集运行时信息,所以在全路径覆盖的测试用例下,可以做到无误报和无漏报。动态分析主流的实现技术有二进制插桩、中间表示插桩和源码插桩。二进制插桩和中间表示插桩存在编译优化敏感、平台依赖性高等缺陷。并且,动态分析还存在测试用例不全、插桩后代码膨胀率较高等问题。
发明内容
发明目的:为了克服上述已有的单一检测分析下存在的问题,本发明的目的旨在提供一种基于混合分析的除零错误检测方法,可以有效地检测源代码中所有的除零错误,相较于单一的静态分析,具有高可用性和无漏报的特点。
技术方案:本发明所述的一种基于混合分析的除零错误检测方法,具体包括以下步骤:
(1)注册自定义静态分析除零错误检测器,对目标程序进行静态分析检测;
(2)使用管道通信,将静态分析模块产生的检测报告传递至动态分析插桩模块;
(3)选择除零错误的监测点,设计转换规则;
(4)动态分析插桩模块根据静态分析检测报告和转换规则,选择性地插桩监测点,获得混合分析后的报告;
(5)生成除零检测接口文件和插桩后的代码文件。
进一步地,所述步骤(1)实现过程如下:
创建源文件注册检测器,继承Clang的Checker<check::PreStmt<BinaryOperator>>类,并重写Clang提供的回调函数checkPreStmt;静态分析引擎符号执行模拟到二元操作符时,就会调用检测器,即创建一个枚举类和一个全局容器,枚举类Status{Unknown,Bad,Good},Unkown表示监测点状态未知,Bad表示监测点状态为错误,Good表示检测点状态为安全;全局容器sa_result_map,sa_result_map类型是map>,SourceLocation是Clang提供记录节点完整位置信息的类,sa_result_map记录每个监测点的位置信息和状态集;Clang静态分析引擎符号执行时可以获得当前上下文信息类CheckerContext,从中获得当前监测点右侧的表达式在当前栈帧下符号执行的状态,对状态进行分析后记录进sa_result_map容器;随着Clang静态分析引擎执行结束,sa_result_map容器会记录所有监测点和其状态集合,并产生静态分析报告。
进一步地,所述回调函数checkPreStmt判断条件和分析步骤如下:
对于当前二元操作符不是“/”、“/=”、“%”和“%=”的任何一种,则不执行回调函数的分析;
对于符号执行无法分析出当前节点右侧表达式值得时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式包含污染值时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式值是常数且不是零时,将当前SourceLocation作为key,将Good作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式值是常数零,将当前SourceLocation作为key,将Bad作为value加入sa_result_map集合;
当前符号执行的模拟栈次数大于四且当前节点之前每次模拟都是GOOD,把当前SourceLocation作为key,将该元素的value集合清空后加入Unknown。
进一步地,所述步骤(2)实现过程如下:
在以C++语言编写的插桩模块中,首先用popen打开一个命令行的管道执行静态分析除零检测器,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果,获取静态分析报告。
进一步地,所述步骤(3)实现过程如下:
根据除零错误的定义,错误发生在二元运算符“/”、“/=”、“%”和“%=”上,监测点在这四个运算符上;对应在AST上是BinaryOperator,CompoundAssignOperator类和其子类;将监测点右侧表达式替换成zeroCheck接口调用,并将zeroCheck强转成监测点右侧表达式的原类型;将监测点右侧表达式作为第一个实参,该监测点运行时环境信息作为第二,第三个实参。
进一步地,所述步骤(4)实现过程如下:
根据静态分析部分对监测点的分析结果,对每个监测点进行区别插桩,获取静态分析结果sa_result_map容器,查看当前监测点的状态集合;如果状态集合中只有Bad类型,则不对监测点进行改写,直接在监测点上一行插入报错函数;状态集合含有Unknown状态,则根据转换规则改写;如果监测点状态集合只有Good,则不进行任何插桩;在主函数结尾和exit处插入报告接口,来产生混合分析后的报告。
进一步地,步骤(5)所述检测接口包含对源代码进行转换的接口调用的定义、相关混合分析报错接口和相关数据结构实现。
有益效果:与现有技术相比,本发明的有益效果:本发明可以有效地检测源代码中所有的除零错误,相较于单一的静态分析,本发明具有高可用性和无漏报的特点;相较于单一的动态分析,采用源码插桩技术实现的动态分析模块在静态分析报告优化下,克服了测试用例不全、膨胀率较高和编译优化敏感的问题。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图对本发明做进一步详细说明。
本发明提供一种基于混合分析的除零错误检测方法,如图1所示,包括以下步骤:
步骤1:注册自定义静态分析除零错误检测器,对目标程序进行静态分析检测。
创建源文件DivZeroChecker.cpp,继承Clang的Checker<check::PreStmt<BinaryOperator>>类,并重写回调函数checkPreStmt,当静态分析引擎符号执行模拟到二元操作符时,就会调用我们的checker。checkPreStmt内主要创建一个枚举类和一个全局容器。枚举类Status{Unknown,Bad,Good},Unkown表示监测点状态未知,Bad表示监测点状态为错误,Good表示检测点状态为安全。全局容器sa_result_map,sa_result_map类型是map<SourceLocation,set<Status>>,SourceLocation是Clang提供记录节点完整位置信息的类,sa_result_map记录每个监测点的位置信息和状态集。Clang静态分析引擎符号执行时可以获得当前上下文信息类CheckerContext,从中获得当前监测点右侧的表达式在当前栈帧下符号执行的状态,对状态进行分析后记录进sa_result_map容器。
回调函数判断条件和分析步骤包含以下子步骤。
1)对于当前二元操作符不是“/”、“/=”、“%”和“%=”的任何一种,则不执行回调函数的分析。
2)对于符号执行无法分析出当前节点右侧表达式值得时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合。
3)对于符号执行判断当前节点右侧表达式包含污染值时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合。
4)对于符号执行判断当前节点右侧表达式值是常数且不是零时,将当前SourceLocation作为key,将Good作为value加入sa_result_map集合。
5)对于符号执行判断当前节点右侧表达式值是常数零,将当前SourceLocation作为key,将Bad作为value加入sa_result_map集合。
6)当前符号执行的模拟栈次数大于四且当前节点之前每次模拟都是GOOD,把当前SourceLocation作为key,将该元素的value集合清空后加入Unknown。
本实例中对于一个待检测的C程序进行静态分析后,会得到所有的除号“/”、“/=”、“%”和“%=”的位置和其对应右侧表达式值的状态集合。对于简单的代码结构,符号执行可以模拟出结果的除号,则将Good或者Bad加入其状态集合。若产生复杂的代码结构,比如除号右侧表达式在递归结构内、训话内或者存在被污染值,为了保守起见,对这些状态集进行Unknown处理。
步骤2:使用管道通信,获取静态分析报告。
在以C++语言编写的插桩模块中,用popen打开一个命令行的管道执行静态分析除零检测器,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果,获取静态分析报告。
本实例中是在动态分析的代码插桩模块中,使用popen调用我们的静态分析模块。然后使用fgets获取保守的静态分析报告。将静态分析报告结构map<SourceLocation,set<Status>>读取到插桩模块中,供插桩和产生检测报告使用。插桩模块中,使用system()函数运行命令行命令,但是只能得到该命令行的int型返回值,并不能获得显示结果。例如system(“ls”)只能得到0或非0,如果要获得ls的执行结果,则要通过管道来完成的。首先用popen打开一个命令行的管道执行静态分析除零检测器,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果,获取静态分析报告。
步骤3:选择除零错误的监测点,设计转换规则。
根据除零错误的定义,错误发生在二元运算符“/”、“/=”、“%”和“%=”上,因此监测点在这四个运算符上。对应在AST上是BinaryOperator,CompoundAssignOperator类和其子类。这些监测点转换规则设计是将监测点右侧表达式替换成zeroCheck接口调用,并将zeroCheck强转成监测点右侧表达式的原类型。将监测点右侧表达式作为第一个实参,该监测点运行时环境信息作为第二,第三个实参。
这些监测点设计转换规则如下:
l_expr/r_expr转换后:l_expr/((raw_type)zeroCheck(r_expr,file_path,sourceLocation))
l_expr/=r_expr转换后:l_expr/=((raw_type)zeroCheck(r_expr,file_path,sourceLocation))
l_expr%r_expr转换后:l_expr%((raw_type)zeroCheck(r_expr file_path,sourceLocation))
l_expr%=r_expr转换后:l_expr%=((raw_type)zeroCheck(r_expr,file_path,sourceLocation))
本实例中是将二元运算符“/”、“/=”、“%”和“%=”作为监测点,在不影响元程序运行逻辑得情况下设计转换规则。比如“a/b”表达式,如果需要转换,就根据我们的转换规则,源码中该表达式会转换成“a/((raw_type)zeroCheck(b,file_path,sourceLocation))”其中zeroCheck是我们的检测接口,第一个实参是b的值,剩下的实参是当前监测点位置,raw_type是“a/b”值得类型。
步骤4:根据静态分析检测报告和转换规则,选择性地插桩监测点,获得混合分析后的报告。
根据静态分析部分对监测点的分析结果,对每个监测点进行逻辑插桩。重写RecursiveASTVisitor中VisitBinDiv、VisitBinRem、VisitBinDivAssign、VisitBinRemAssign回调函数。获取静态分析结果sa_result_map容器,查看当前监测点的状态集合,如果状态集合中只有Bad类型,则不对监测点进行改写,直接在监测点上一行插入报错函数,状态集合含有Unknown状态,则根据转换规则改写,如果监测点状态集合只有Good,则不进行任何插桩。重写Clang的VisitFcuntionDecl和VisitCallExpression函数,在主函数和exit处插入report接口来产生混合分析后的报告。
本实例中将VisitBinDiv、VisitBinRem、VisitBinDivAssign、VisitBinRemAssign进行重写,对源码中所有的监测点进行选择性的插桩。根据静态分析报告中对当前监测点的状态集合的分析,减少一些不必要的插桩。比如“a/0”表达式,静态分析报告已经指明该监测点状态集只有Bad,因此只需要插桩报错接口即可。对于“a/usr_input”表达式,usr_input值是来源于用户输入,该监测点的状态集中有Unknown,因此需要对该监测点根据转换规则进行改写。并且在目标代码主函数结尾或者exit处插入report函数调用进行混合分析报告。
步骤5:生成除零检测接口文件和插桩后的代码文件。
检测接口包含对源代码进行转换的接口调用的定义、相关混合分析报错接口和相关数据结构实现。并生成插桩后的代码。
编写zeroCheck和report接口定义。如果zeroCheck传递过来的第一实参num,符合fabs(num)<1e-6,则利用第二个实参和第三个实参传递过来的运行时环境参数进行报错处理,若不符合,则将Good点加入当前节点的状态集中。report接口定义通过分析所有监测点的状态集来产生混合分析报告。
本实例中对运行时监测点右值进行判断,比如“a/usr_input”中usr_input值用户输入0,则zeorCheck会进行fabs(usr_input)<1e-6进行判断。零值判断存在浮点数不精确的问题,因此对表达式值取绝对值,判断其是否在一定精度范围内。若符合fabs(num)<1e-6判断,则进行报错。report接口定义是根据静态分析报告和运行时报告产生混合分析报告,混合分析报告模板如下:
在当前测试用例下:路径/源文件xx.c xxx行xx列,…,路径/源文件xx.c xxx行xx列的除号没有被测试,请重新设计测试用例。
:路径/源文件xx.c xxx行xx列,…,路径/源文件xx.c xxx行xx列的除号没有被测试且可能发生除零错误,请重新设计测试用例
:路径/源文件xx.c行xx列的除号发生除零错误,请修复。
路径/源文件xx.c xxx行xx列,…,路径/源文件xx.c xxx行xx列的除号存在除零错误,请修复。
路径/源文件xx.c xxx行xx列,…,路径/源文件xx.c xxx行xx列的除号不存在除零错误,测试用例设计可以忽略此监测点。
经过上述步骤的操作,即可实现对除零错误有效检测,并且根据其混合分析报告可以编写路径覆盖更全面的测试用例。
综上所述,本发明设计了一种基于混合分析的除零错误检测方法。依赖Clang编译器提供的静态分析引擎和AST接口完成对静态分析模块和动态分析插桩模块的实现,两模块通过管道进行通信。经过对目标程序混合分析后产生的混合分析报告,具有高可用性和低膨胀率的特点。实现了对C程序中所有除零错误有效的检测,从而提高软件的可靠性和安全性。
以上所述仅是本发明的部分实施方式。应当指出,对于本领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干优化和改进,或者对其中部分技术特征进行等同替换,这些改进和替换也应视为本发明的保护范围。
Claims (7)
1.一种基于混合分析的除零错误检测方法,其特征在于,包括以下步骤:
(1)注册自定义静态分析除零错误检测器,对目标程序进行静态分析检测;
(2)使用管道通信,将静态分析模块产生的检测报告传递至动态分析插桩模块;
(3)选择除零错误的监测点,设计转换规则;
(4)动态分析插桩模块根据静态分析检测报告和转换规则,选择性地插桩监测点,获得混合分析后的报告;
(5)生成除零检测接口文件和插桩后的代码文件。
2.根据权利要求1所述的一种基于混合分析的除零错误检测方法,其特征在于,所述步骤(1)实现过程如下:
创建源文件注册检测器,继承Clang的Checker<check::PreStmt<BinaryOperator>>类,并重写Clang提供的回调函数checkPreStmt;静态分析引擎符号执行模拟到二元操作符时,就会调用检测器,即创建一个枚举类和一个全局容器,枚举类Status{Unknown,Bad,Good},Unkown表示监测点状态未知,Bad表示监测点状态为错误,Good表示检测点状态为安全;全局容器sa_result_map,sa_result_map类型是map>,SourceLocation是Clang提供记录节点完整位置信息的类,sa_result_map记录每个监测点的位置信息和状态集;Clang静态分析引擎符号执行时可以获得当前上下文信息类CheckerContext,从中获得当前监测点右侧的表达式在当前栈帧下符号执行的状态,对状态进行分析后记录进sa_result_map容器;随着Clang静态分析引擎执行结束,sa_result_map容器会记录所有监测点和其状态集合,并产生静态分析报告。
3.根据权利要求2所述的一种基于混合分析的除零错误检测方法,其特征在于,所述回调函数checkPreStmt判断条件和分析步骤如下:
对于当前二元操作符不是“/”、“/=”、“%”和“%=”的任何一种,则不执行回调函数的分析;
对于符号执行无法分析出当前节点右侧表达式值得时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式包含污染值时,将当前SourceLocation作为key,将Unknown作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式值是常数且不是零时,将当前SourceLocation作为key,将Good作为value加入sa_result_map集合;
对于符号执行判断当前节点右侧表达式值是常数零,将当前SourceLocation作为key,将Bad作为value加入sa_result_map集合;
当前符号执行的模拟栈次数大于四且当前节点之前每次模拟都是GOOD,把当前SourceLocation作为key,将该元素的value集合清空后加入Unknown。
4.根据权利要求1所述的一种基于混合分析的除零错误检测方法,其特征在于,所述步骤(2)实现过程如下:
在以C++语言编写的插桩模块中,首先用popen打开一个命令行的管道执行静态分析除零检测器,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果,获取静态分析报告。
5.根据权利要求1所述的一种基于混合分析的除零错误检测方法,其特征在于,所述步骤(3)实现过程如下:
根据除零错误的定义,错误发生在二元运算符“/”、“/=”、“%”和“%=”上,监测点在这四个运算符上;对应在AST上是BinaryOperator,CompoundAssignOperator类和其子类;将监测点右侧表达式替换成zeroCheck接口调用,并将zeroCheck强转成监测点右侧表达式的原类型;将监测点右侧表达式作为第一个实参,该监测点运行时环境信息作为第二,第三个实参。
6.根据权利要求1所述的一种基于混合分析的除零错误检测方法,其特征在于,所述步骤(4)实现过程如下:
根据静态分析部分对监测点的分析结果,对每个监测点进行区别插桩,获取静态分析结果sa_result_map容器,查看当前监测点的状态集合;如果状态集合中只有Bad类型,则不对监测点进行改写,直接在监测点上一行插入报错函数;状态集合含有Unknown状态,则根据转换规则改写;如果监测点状态集合只有Good,则不进行任何插桩;在主函数结尾和exit处插入报告接口,来产生混合分析后的报告。
7.根据权利要求1所述的一种基于混合分析的除零错误检测方法,其特征在于,步骤(5)所述检测接口包含对源代码进行转换的接口调用的定义、相关混合分析报错接口和相关数据结构实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210100181.XA CN114579431A (zh) | 2022-01-27 | 2022-01-27 | 一种基于混合分析的除零错误检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210100181.XA CN114579431A (zh) | 2022-01-27 | 2022-01-27 | 一种基于混合分析的除零错误检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579431A true CN114579431A (zh) | 2022-06-03 |
Family
ID=81769441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210100181.XA Pending CN114579431A (zh) | 2022-01-27 | 2022-01-27 | 一种基于混合分析的除零错误检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579431A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117520199A (zh) * | 2023-12-06 | 2024-02-06 | 北京邮电大学 | 基于静态符号执行的数值软件缺陷检测方法及装置 |
-
2022
- 2022-01-27 CN CN202210100181.XA patent/CN114579431A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117520199A (zh) * | 2023-12-06 | 2024-02-06 | 北京邮电大学 | 基于静态符号执行的数值软件缺陷检测方法及装置 |
CN117520199B (zh) * | 2023-12-06 | 2024-05-14 | 北京邮电大学 | 基于静态符号执行的数值软件缺陷检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jin et al. | Automated behavioral regression testing | |
CN101739339B (zh) | 一种基于程序动态依赖关系的软件故障定位方法 | |
Le Goues et al. | Specification mining with few false positives | |
US20080256517A1 (en) | Method and System for Automatically Generating Unit Test Cases Which Can Reproduce Runtime Problems | |
Usman et al. | A survey of consistency checking techniques for UML models | |
CN115659335A (zh) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 | |
US7624304B2 (en) | Defect detection for integers | |
CN114579431A (zh) | 一种基于混合分析的除零错误检测方法 | |
CN106529304A (zh) | 一种安卓应用并发漏洞检测系统 | |
Kampmann et al. | Carving parameterized unit tests | |
Villalobos-Arias et al. | Evaluation of a model‐based testing platform for Java applications | |
CN113836023B (zh) | 一种基于体系结构交叉检查的编译器安全性测试方法 | |
US20140289712A1 (en) | Effective Lifetime Dependency Analysis and Typestate Analysis | |
Aranega et al. | Rotten green tests in Java, Pharo and Python: An empirical study | |
Win | Theorem-proving distributed algorithms with dynamic analysis | |
CN113849814A (zh) | 一种可配置系统漏洞复现系统以及复现方法 | |
Micskei et al. | Robustness testing techniques for high availability middleware solutions | |
Lim et al. | Automatically localizing dynamic code generation bugs in jit compiler back-end | |
CN109542698A (zh) | 一种基于变异测试的虚拟原型错误检测方法 | |
Wu et al. | Defining a test coverage criterion for model-level testing of FBD programs | |
Alkhalid | Bridging the gap between GUI functional system testing and functional system logic testing | |
Lu et al. | Model-based static code analysis for MATLAB models | |
CN117520199B (zh) | 基于静态符号执行的数值软件缺陷检测方法及装置 | |
Dong | A sound abstract memory model for static analysis of C programs | |
Soomro et al. | A Framework for Debugging Java Programs in a Bytecode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |