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,公开了一种软件缺陷检测方法及装置,基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。通过对所获初检代码集合包括的代码段中的路径进行危险路径筛选,并对危险路径进行路径可行性检测,进而在保证软件缺陷检测的准确性的前提下,减小缺陷检测所消耗的时间,提高软件缺陷检测的效率。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种基于主题模型软件缺陷检测的方法和系统。根据本专利技术提供的一种基于主题模型软件缺陷检测的方法,包括:空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征 ...
【技术保护点】
1.一种基于主题模型软件缺陷检测的方法,其特征在于,包括:/n空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;/n语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。/n
【技术特征摘要】 【专利技术属性】
1.一种基于主题模型软件缺陷检测的方法,其特征在于,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
2.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
3.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
4.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
5.根据权利要求3所述的基于主题模型软件缺陷检测的方法,其特征在于,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
技术研发人员:张俊博,高元钧,徐冬晨,陆平,
申请(专利权)人:华东计算技术研究所中国电子科技集团公司第三十二研究所,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。