【技术实现步骤摘要】
本专利技术涉及代码测试领域,特别涉及一种静态代码缺陷检测分析方法及装置。
技术介绍
随着软件技术的日益发展,软件系统的复杂性和规模性也在不断地扩大,不可避免地会导致代码中出现BUG(缺陷)及失误,由此而引起的软件问题及其带来的危害性也越来越显著,由于软件代码问题而引起的巨大损失或者灾难也不断地出现在人们的视野中。为了解决这些问题,软件测试就显得尤为重要,目前,软件测试主要通过动态检测分析和静态检测分析两个方面进行。其中,静态检测分析是指不运行被测代码本身,仅通过分析或检查源程序的语法、结构、过程及接口等来检查程序的正确性。静态检测中相比较于直接对源代码文件的代码进行分析,分析经过编译预处理的源代码文件的代码相对而言要简单,所以大多数静态分析工具都以源代码文件的代码经过预处理产生的预编译结果文件为分析对象,使用编译器对源代码文件的代码进行预处理,然后进行后续分析。静态检测的效率与待待测源代码文件的代码的规模、代码行数、语法复杂度及检测分析的方法等因素直接相关,然而现有技术中的静态代码缺陷检测分析方法一般都是以串行检测分析的方式进行检测分析,这样在需要对大量工程文件进行检测分析的时候,使得对代码的缺陷检测效率低下。总之,现有技术的问题:现有的静态代码缺陷检测分析方法是以串行检测分析的方式进行检测分析,使得在需要对大量工程文件进行检测分析的时候,效率低下。
技术实现思路
本专利技术实施例的目的在于提供一种静态代码缺陷检测分析方法及装置,通过结合串行检测分析与并行检测分析的方法,提高待测源代码文件的代码缺陷检测分析的效率。为达到上述目的,本专利技术实施例公开了一种静 ...
【技术保护点】
一种静态代码缺陷检测分析方法,其特征在于,包括:获取待测源代码文件,其中,所述待测源代码文件包括:多个待测源代码文件段的测试单元;根据所述待测源代码文件,生成抽象语法树;根据所述抽象语法树,建立每个当前测试单元与其他测试单元的关联,得到关联后的每个当前测试单元与其他测试单元的依赖关系,其中,所述其他测试单元为所述多个测试单元中除所述当前测试单元以外的其他测试单元;根据所述依赖关系,结合串行检测分析与并行检测分析,并对所述待测源代码文件的代码缺陷检测分析。
【技术特征摘要】
1.一种静态代码缺陷检测分析方法,其特征在于,包括:获取待测源代码文件,其中,所述待测源代码文件包括:多个待测源代码文件段的测试单元;根据所述待测源代码文件,生成抽象语法树;根据所述抽象语法树,建立每个当前测试单元与其他测试单元的关联,得到关联后的每个当前测试单元与其他测试单元的依赖关系,其中,所述其他测试单元为所述多个测试单元中除所述当前测试单元以外的其他测试单元;根据所述依赖关系,结合串行检测分析与并行检测分析,并对所述待测源代码文件的代码缺陷检测分析。2.根据权利要求1所述的静态代码缺陷检测分析方法,其特征在于,所述根据所述待测源代码文件,生成抽象语法树,包括:通过预处理方式,处理所述待测源代码文件,生成中间文件;简化所述中间文件;根据简化后的中间文件,生成所述抽象语法树。3.根据权利要求2所述的静态代码缺陷检测分析方法,其特征在于,所述简化所述中间文件,包括:读取所述中间文件中的头文件名称和所述头文件名称对应的展开部分,其中,所述头文件名称对应的展开部分包括:所述头文件名称对应的函数声明信息和自定义声明信息;判断所述头文件名称是否存在于预先分析的头文件列表中;如果是,则删除所述头文件名称对应的展开部分,得到简化后的中间文件。4.根据权利要求3所述的静态代码缺陷检测分析方法,其特征在于,所述简化所述中间文件,在判断所述头文件名称是否存在于预先分析的头文件列表中之后,所述静态代码缺陷检测分析方法还包括:如果否,则添加所述头文件名称至所述预先分析的头文件列表中,并更新预设的头文件信息表,其中,所述预设的头文件信息表包括:所述中间文件中头文件的名称、头文件所在测试单元的名称、自定义类型信息以及头文件中函数声明信息及变量的声明信息。5.根据权利要求2所述的静态代码缺陷检测分析方法,其特征在于,所述根据简化后的中间文件,生成所述抽象语法树,包括:获取简化后的中间文件的头文件列表中包含的头文件名称;根据所述头文件名称,得到所述头文件名称对应的存储在所述头文件信息表中的头文件信息内容;根据所述头文件信息内容,生成抽象语法树。6.根据权利要求1所述的静态代码缺陷检测分析方法,其特征在于,所述根据所述抽象语法树,建立每个当前测试单元与其他测试单元的关联,得到关联后的每个当前测试单元与其他测试单元的依赖关系,包括:根据所述抽象语法树,生成符号表和控制流图,其中,所述符号表包括:所述待测源代码文件的每个标识符和对应的标识符的声明信息,所述控制流图中对应待测源代码文件的一个语句、与所述控制流图中的一个节点对应;根据所述符号表中的函数信息,并通过所述函数信息定义函数节点,其中,所述函数信息为定义不同作用域...
【专利技术属性】
技术研发人员:宫云战,邓秋晗,金大海,黄俊飞,王雅文,
申请(专利权)人:北京邮电大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。