基于主题模型软件缺陷检测的方法和系统技术方案

技术编号:22688682 阅读:39 留言:0更新日期:2019-11-30 03:26
本发明专利技术提供了一种基于主题模型软件缺陷检测的方法和系统,在空间构建中,令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;在语义分析中,构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。将处理自然语言的机器学习算法加入到软件缺陷检测中,从语义级检测代码中隐藏的缺陷,从而丰富了高安全软件代码缺陷检测的手段,自动检测出给定代码中是否具有和缺陷模式库中已知的缺陷相似的缺陷,进一步提高软件的质量。

Method and system of software defect detection based on theme model

The invention provides a method and system for software defect detection based on subject model. In space construction, the static source code generates the corresponding abstract syntax tree, maps the abstract syntax tree to the digital feature vector space, and constructs the original matrix; in semantic analysis, the defect pattern database is constructed, and the singular matrix decomposition and dimensionality reduction are carried out for the defect pattern database to form the reconstruction moment Matrix, the cosine similarity of the reconstruction matrix is calculated, and the defect detection results are obtained. The machine learning algorithm dealing with natural language is added to software defect detection, which can detect hidden defects in the code from the semantic level, thus enriching the means of high security software code defect detection, automatically detecting whether the given code has defects similar to those known in the defect pattern library, and further improving the quality of software.

【技术实现步骤摘要】
基于主题模型软件缺陷检测的方法和系统
本专利技术涉及安全检测
,具体地,涉及一种基于主题模型软件缺陷检测的方法和系统。
技术介绍
目前,主流的静态源代码缺陷检测方法的核心思想都是查找和匹配,无论是词法、语法还是语义层面,都是不同层次的匹配过程,这样就无法能够使得具有相似缺陷但是不完全相同的缺陷被检测出来。而把机器学习方法用在静态源代码缺陷检测中成为一种新兴的思想。由于机器学习中的主题模型算法先天的智能因素,具备潜在的语义理解能力,可以从语义因而具有较好的发展潜力。与本申请相关的现有技术是专利文献CN105204997B,公开了一种软件缺陷检测方法及装置,基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。通过对所获初检代码集合包括的代码段中的路径进行危险路径筛选,并对危险路径进行路径可行性检测,进而在保证软件缺陷检测的准确性的前提下,减小缺陷检测所消耗的时间,提高软件缺陷检测的效率。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种基于主题模型软件缺陷检测的方法和系统。根据本专利技术提供的一种基于主题模型软件缺陷检测的方法,包括:空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。优选地,所述空间构建步骤包括:生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。优选地,所述语义分析步骤包括:构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。优选地,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。优选地,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。根据本专利技术提供的一种基于主题模型软件缺陷检测的系统,包括:空间构建模块:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;语义分析模块:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。优选地,所述空间构建模块包括:生成语法树模块:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;映射空间模块:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。优选地,所述语义分析模块包括:构建缺陷库模块:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;分解降维模块:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;余弦计算模块:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。与现有技术相比,本专利技术具有如下的有益效果:将机器学习中主题模型的潜在语义分析算法运用到软件代码缺陷检测中的分解降维构建重构矩阵的过程中,提供一种新的语义级的方式去检测代码中的缺陷,使软件代码缺陷检测方法更加多样化;可以检测出软件代码中传统匹配方式检测工具无法检测出的缺陷,从而提高代码的质量,进一步增强软件的安全性和可靠性。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术缺陷检测方法总体设计框架图示意图;图2为本专利技术构建抽象语法树流程示意图;图3为本专利技术抽象语法树到向量空间映射示意图;图4为本专利技术原始矩阵的重构矩阵构建示意图;图5为本专利技术的缺陷检测流程图。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。根据本专利技术提供的一种基于主题模型软件缺陷检测的方法,包括:空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。具体地,所述空间构建步骤包括:生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。具体地,所述语义分析步骤包括:构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦本文档来自技高网...

【技术保护点】
1.一种基于主题模型软件缺陷检测的方法,其特征在于,包括:/n空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;/n语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。/n

【技术特征摘要】
1.一种基于主题模型软件缺陷检测的方法,其特征在于,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。


2.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。


3.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。


4.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。


5.根据权利要求3所述的基于主题模型软件缺陷检测的方法,其特征在于,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。

【专利技术属性】
技术研发人员:张俊博高元钧徐冬晨陆平
申请(专利权)人:华东计算技术研究所中国电子科技集团公司第三十二研究所
类型:发明
国别省市:上海;31

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

1