CN110515838A - 基于主题模型软件缺陷检测的方法和系统 - Google Patents
基于主题模型软件缺陷检测的方法和系统 Download PDFInfo
- Publication number
- CN110515838A CN110515838A CN201910702008.5A CN201910702008A CN110515838A CN 110515838 A CN110515838 A CN 110515838A CN 201910702008 A CN201910702008 A CN 201910702008A CN 110515838 A CN110515838 A CN 110515838A
- Authority
- CN
- China
- Prior art keywords
- defect
- syntax tree
- abstract syntax
- matrix
- code
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 161
- 238000000034 method Methods 0.000 title claims abstract description 30
- 239000011159 matrix material Substances 0.000 claims abstract description 95
- 238000001514 detection method Methods 0.000 claims abstract description 51
- 239000013598 vector Substances 0.000 claims abstract description 45
- 230000009467 reduction Effects 0.000 claims abstract description 23
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 15
- 238000010276 construction Methods 0.000 claims abstract description 15
- 230000003068 static effect Effects 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 235000013399 edible fruits Nutrition 0.000 claims 2
- 238000010801 machine learning Methods 0.000 abstract description 8
- 238000012545 processing Methods 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000007689 inspection Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000035899 viability Effects 0.000 description 1
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于主题模型软件缺陷检测的方法和系统,在空间构建中,令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;在语义分析中,构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。将处理自然语言的机器学习算法加入到软件缺陷检测中,从语义级检测代码中隐藏的缺陷,从而丰富了高安全软件代码缺陷检测的手段,自动检测出给定代码中是否具有和缺陷模式库中已知的缺陷相似的缺陷,进一步提高软件的质量。
Description
技术领域
本发明涉及安全检测技术领域,具体地,涉及一种基于主题模型软件缺陷检测的方法和系统。
背景技术
目前,主流的静态源代码缺陷检测方法的核心思想都是查找和匹配,无论是词法、语法还是语义层面,都是不同层次的匹配过程,这样就无法能够使得具有相似缺陷但是不完全相同的缺陷被检测出来。而把机器学习方法用在静态源代码缺陷检测中成为一种新兴的思想。由于机器学习中的主题模型算法先天的智能因素,具备潜在的语义理解能力,可以从语义因而具有较好的发展潜力。
与本申请相关的现有技术是专利文献CN 105204997B,公开了一种软件缺陷检测方法及装置,基于指定错误类型,从待检测源代码中,获取初检代码集合,所述初检代码集合中包括多个存在潜在缺陷的代码段;对于所述初检代码集合中的每个代码段,对所述代码段进行危险路径筛选,得到所述代码段的指令集,所述指令集中包括危险路径;分别对所述每个代码段的指令集进行路径可行性检测,以对所述待检测源代码进行软件缺陷检测。通过对所获初检代码集合包括的代码段中的路径进行危险路径筛选,并对危险路径进行路径可行性检测,进而在保证软件缺陷检测的准确性的前提下,减小缺陷检测所消耗的时间,提高软件缺陷检测的效率。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于主题模型软件缺陷检测的方法和系统。
根据本发明提供的一种基于主题模型软件缺陷检测的方法,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
优选地,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
优选地,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
优选地,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
优选地,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
根据本发明提供的一种基于主题模型软件缺陷检测的系统,包括:
空间构建模块:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析模块:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
优选地,所述空间构建模块包括:
生成语法树模块:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间模块:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
优选地,所述语义分析模块包括:
构建缺陷库模块:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维模块:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算模块:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
与现有技术相比,本发明具有如下的有益效果:
将机器学习中主题模型的潜在语义分析算法运用到软件代码缺陷检测中的分解降维构建重构矩阵的过程中,提供一种新的语义级的方式去检测代码中的缺陷,使软件代码缺陷检测方法更加多样化;可以检测出软件代码中传统匹配方式检测工具无法检测出的缺陷,从而提高代码的质量,进一步增强软件的安全性和可靠性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明缺陷检测方法总体设计框架图示意图;
图2为本发明构建抽象语法树流程示意图;
图3为本发明抽象语法树到向量空间映射示意图;
图4为本发明原始矩阵的重构矩阵构建示意图;
图5为本发明的缺陷检测流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于主题模型软件缺陷检测的方法,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
具体地,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
具体地,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
具体地,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
具体地,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
根据本发明提供的一种基于主题模型软件缺陷检测的系统,包括:
空间构建模块:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析模块:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
具体地,所述空间构建模块包括:
生成语法树模块:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间模块:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
具体地,所述语义分析模块包括:
构建缺陷库模块:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维模块:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算模块:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
本发明提供的基于主题模型软件缺陷检测系统,可以通过基于主题模型软件缺陷检测方法的步骤流程实现。本领域技术人员可以将基于主题模型软件缺陷检测方法理解为所述基于主题模型软件缺陷检测系统的优选例。
目前由于在车载电子、轨道交通、核工业、航空航天、武器装备等高安全关键领域,要求保障嵌入式电子装备能够安全可靠稳定地运行。嵌入式软件作为电子装备的关键组成部分,其质量已经成为确保电子装备产品和工程整体质量的关键。电子装备系统的安全和效能严重地依赖于嵌入式软件的质量,因此其对嵌入式软件的质量提出了更高的要求,目前仅仅通过传统的查找和匹配方式检测缺陷的方法是不够的。将处理自然语言的机器学习算法加入到软件缺陷检测中,可以从语义级检测代码中隐藏的缺陷,从而丰富了高安全软件代码缺陷检测的手段,进一步提高软件的质量。本发明的基于主题模型的软件缺陷检测方法主要是将主题模型中潜在语义分析算法运用到软件缺陷检测中,自动检测出给定代码中是否具有和缺陷模式库中已知的缺陷相似的缺陷。
如图1所示,具体实施中通过源代码特征向量空间构建和潜在语义分析算法处理两大步骤进行。其中,源代码特征向量空间构建分为两大部分,第一部分是将静态源代码生成其所对应的抽象语法树;第二部分是将源代码的抽象语法树映射到数字化的特征向量空间中。
抽象语法树的构建对于源代码特征向量空间的构建而言,包含有源代码中详细信息的具体语法树并不是我们的最佳选择。因为具体语法树中,包含的源代码的详细信息有些并不是特征向量空间构建所关心的,有些详细信息又是需要重点关注分析的。抽象语法树作为一种反映源代码结构的高效的中间形式,其结构不仅不依赖于源代码的具体文法,并且语法分析阶段也是采用上下文无关文法。因此,与具体语法树相比,抽象语法树更容易简洁地表达源代码的结构,更利于源代码特征的提取及向量空间的构建。
构建抽象语法树是通过抽象语法树构建工具来实现的,即通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,根据抽象语法树的文法规则分别生成相应的词法分析器即Lexer和相应的语法分析器即Parser,通过生成的Lexer和Parser对程序源代码进行语言识别生成我们所需要的抽象语法树,语言识别过程见如图2所示。
抽象语法树给我们提供了相应的源代码的丰富的信息。但是,机器学习识别技术通常是用来处理数值化向量的,不能直接用来处理抽象语法树这样的数据类型。因此,为了解决这个问题,需要一种合适的方法将抽象语法树映射到数字化的向量空间。受到向量空间模型的启发,我们可以将源代码的每一个函数所对应的抽象语法树作为一个“文本”,选取抽象语法树的“特征项”,用抽象语法树的“特征项”来构建特征向量,这样我们就可以将抽象语法树顺利的映射到向量空间,整体映射流程如图3所示。
至此,我们可以将潜在语义分析算法无法操作的抽象语法树类型映射到其可以操作的数值化向量类型。
潜在语义分析处理包括缺陷模式库的构建、对缺陷模式库进行奇异矩阵分解降维和对重构矩阵进行余弦相似度计算三部分组成。
缺陷模式库是将一组具有某些特定类型的缺陷模式的源代码所构成的特征向量空间(即是所组成的原始矩阵)。它是我们进行源代码缺陷检测的数据基础。因此,必不可少的一项工作是构建出我们需要的缺陷模式库。
首先,选取多种类型已知的缺陷模式,针对每一种缺陷模式选取多个具有此缺陷模式的源代码作为构建缺陷模式库的原始数据。
其次,将我们所选取的原始数据即具有缺陷模式的源代码,构建出其对应的抽象语法树。
第三,将上述生成的抽象语法树选取其中的API节点作为特征项,按照抽象语法树映射到向量空间的方法,生成“API节点特征项-抽象语法树”矩阵,即构造完成我们所需要的缺陷模式库。
第四,在后续的工作中,如果有新的缺陷模式不断发现并且要加入缺陷模式库,则将其按照前三步中的方法将其添加到原有的缺陷模式库,来构建新的缺陷模式库。
主题模型属于机器学习的范畴,通奇异矩阵矩阵分解降维重构构造原始矩阵的重构矩阵的过程即是主题模型的潜在语义分析算法。奇异矩阵分解降维是将需要检测的代码与缺陷模式库构成新的特征向量空间(即原始矩阵矩阵),然后将其通过奇异矩阵分解的方式将高维向量空间模型表示的文本映射到低维度的潜在语义空间如图4所示,构成原始矩阵的重构矩阵。
余弦相似度计算中,余弦相似度中两个向量的相似性是通过两者的内积夹角的余弦值来进行度量的。对重构后的矩阵进行余弦相似度计算得到余弦矩阵,最后对近似矩阵进行余弦相似度计算依据其结果来决策出代码中是否具有缺陷模式库中已知的缺陷。
本发明将机器学习中主题模型的算法应用在计算机软件缺陷检测中的技术,尤其涉及应用在高安全和高可靠软件的缺陷检测中的技术。当用户需要检测代码中的缺陷时,首先将待检测的源代码通过ANTLR语言识别工具将代码生产相应的语法树,将生成的语法树文件通过MATLAB工具按照预先完成的算法程序映射成对应的特征向量,将该特征向量加入到已有的缺陷模式库中,构造出新的原始矩阵,最后将原始矩阵文件输入到MATLAB工具中,通过潜在语义分析算法进行处理判断出代码中是否具有已知缺陷模式库中的缺陷,具体检测流程如图5所示。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于主题模型软件缺陷检测的方法,其特征在于,包括:
空间构建步骤:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析步骤:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
2.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述空间构建步骤包括:
生成语法树步骤:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间步骤:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
3.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述语义分析步骤包括:
构建缺陷库步骤:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维步骤:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算步骤:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
4.根据权利要求1所述的基于主题模型软件缺陷检测的方法,其特征在于,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
5.根据权利要求3所述的基于主题模型软件缺陷检测的方法,其特征在于,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
6.一种基于主题模型软件缺陷检测的系统,其特征在于,包括:
空间构建模块:令静态源代码生成对应的抽象语法树,将抽象语法树映射到数字化的特征向量空间中,构建原始矩阵;
语义分析模块:构建缺陷模式库,对缺陷模式库进行奇异矩阵分解降维,构成重构矩阵,对重构矩阵进行余弦相似度计算,得出缺陷检测结果。
7.根据权利要求6所述的基于主题模型软件缺陷检测的系统,其特征在于,所述空间构建模块包括:
生成语法树模块:通过编写源代码采用的目标语言所对应的抽象语法树的文法规则,生成词法分析器和语法分析器,通过词法分析器和语法分析器分别对源代码进行语言识别,生成抽象语法树;
映射空间模块:将源代码的一个函数所对应的抽象语法树作为一个文本,选取抽象语法树的特征项,采用特征项构建特征向量,将得到的抽象语法树与特征向量空间的映射矩阵作为原始矩阵。
8.根据权利要求6所述的基于主题模型软件缺陷检测的系统,其特征在于,所述语义分析模块包括:
构建缺陷库模块:选取多种缺陷类型已知的缺陷模式,针对每种缺陷模式选取多个具有所述缺陷模式的源代码作为原始数据,构建抽象语法树,将抽象语法树中的API节点作为特征项,生成缺陷模式库;
分解降维模块:将待检测代码与缺陷模式库构成新原始矩阵,通过奇异矩阵分解降维将高维向量空间模型表示的文本映射到低维度的潜在语义空间,构成新原始矩阵的重构矩阵;
余弦计算模块:对重构矩阵进行余弦相似度计算得到余弦矩阵,依据余弦相似度的结果检测待检测代码存在缺陷模式库中的已知缺陷。
9.根据权利要求6所述的基于主题模型软件缺陷检测的系统,其特征在于,所述静态源代码生成对应的抽象语法树采用抽象语法树构建工具进行,将生成的语法树文件通过MATLAB工具构建原始矩阵。
10.根据权利要求8所述的基于主题模型软件缺陷检测的系统,其特征在于,所述缺陷模式库支持添加新缺陷,构建新缺陷模式库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702008.5A CN110515838A (zh) | 2019-07-31 | 2019-07-31 | 基于主题模型软件缺陷检测的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910702008.5A CN110515838A (zh) | 2019-07-31 | 2019-07-31 | 基于主题模型软件缺陷检测的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110515838A true CN110515838A (zh) | 2019-11-29 |
Family
ID=68623793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910702008.5A Pending CN110515838A (zh) | 2019-07-31 | 2019-07-31 | 基于主题模型软件缺陷检测的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515838A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597103A (zh) * | 2020-03-23 | 2020-08-28 | 浙江工业大学 | 一种嵌入式软件SysML模型状态空间约简方法 |
CN111930953A (zh) * | 2020-09-21 | 2020-11-13 | 北京合享智慧科技有限公司 | 一种文本属性特征的识别、分类及结构分析方法及装置 |
CN112597038A (zh) * | 2020-12-28 | 2021-04-02 | 中国航天系统科学与工程研究院 | 软件缺陷预测方法及系统 |
CN112860545A (zh) * | 2021-01-25 | 2021-05-28 | 国电南瑞科技股份有限公司 | 一种软件缺陷检测方法与装置 |
CN113609246A (zh) * | 2021-08-04 | 2021-11-05 | 上海犇众信息技术有限公司 | 一种网页相似性检测方法及系统 |
CN113849413A (zh) * | 2021-10-15 | 2021-12-28 | 上海航天计算机技术研究所 | 基于知识库特征匹配的代码规则检查方法及系统 |
CN117555811A (zh) * | 2024-01-11 | 2024-02-13 | 北京邮电大学 | 基于静态符号执行的嵌入式软件分析方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970666A (zh) * | 2014-05-29 | 2014-08-06 | 重庆大学 | 一种软件重复缺陷报告检测的方法 |
CN105975392A (zh) * | 2016-04-29 | 2016-09-28 | 国家计算机网络与信息安全管理中心 | 一种基于抽象语法树的重复代码检测方法及装置 |
US20180268015A1 (en) * | 2015-09-02 | 2018-09-20 | Sasha Sugaberry | Method and apparatus for locating errors in documents via database queries, similarity-based information retrieval and modeling the errors for error resolution |
CN108932192A (zh) * | 2017-05-22 | 2018-12-04 | 南京大学 | 一种基于抽象语法树的Python程序类型缺陷检测方法 |
-
2019
- 2019-07-31 CN CN201910702008.5A patent/CN110515838A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970666A (zh) * | 2014-05-29 | 2014-08-06 | 重庆大学 | 一种软件重复缺陷报告检测的方法 |
US20180268015A1 (en) * | 2015-09-02 | 2018-09-20 | Sasha Sugaberry | Method and apparatus for locating errors in documents via database queries, similarity-based information retrieval and modeling the errors for error resolution |
CN105975392A (zh) * | 2016-04-29 | 2016-09-28 | 国家计算机网络与信息安全管理中心 | 一种基于抽象语法树的重复代码检测方法及装置 |
CN108932192A (zh) * | 2017-05-22 | 2018-12-04 | 南京大学 | 一种基于抽象语法树的Python程序类型缺陷检测方法 |
Non-Patent Citations (2)
Title |
---|
董美含: ""基于缺陷报告和源代码的相似缺陷识别方法"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
黄小亮 等: ""基于LDA主题模型的软件缺陷分派方法"", 《计算机工程》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597103A (zh) * | 2020-03-23 | 2020-08-28 | 浙江工业大学 | 一种嵌入式软件SysML模型状态空间约简方法 |
CN111597103B (zh) * | 2020-03-23 | 2023-11-28 | 浙江工业大学 | 一种嵌入式软件SysML模型状态空间约简方法 |
CN111930953A (zh) * | 2020-09-21 | 2020-11-13 | 北京合享智慧科技有限公司 | 一种文本属性特征的识别、分类及结构分析方法及装置 |
CN112597038A (zh) * | 2020-12-28 | 2021-04-02 | 中国航天系统科学与工程研究院 | 软件缺陷预测方法及系统 |
CN112597038B (zh) * | 2020-12-28 | 2023-12-08 | 中国航天系统科学与工程研究院 | 软件缺陷预测方法及系统 |
CN112860545A (zh) * | 2021-01-25 | 2021-05-28 | 国电南瑞科技股份有限公司 | 一种软件缺陷检测方法与装置 |
CN112860545B (zh) * | 2021-01-25 | 2022-11-11 | 国电南瑞科技股份有限公司 | 一种软件缺陷检测方法与装置 |
CN113609246A (zh) * | 2021-08-04 | 2021-11-05 | 上海犇众信息技术有限公司 | 一种网页相似性检测方法及系统 |
CN113609246B (zh) * | 2021-08-04 | 2024-04-12 | 奇安盘古(上海)信息技术有限公司 | 一种网页相似性检测方法及系统 |
CN113849413A (zh) * | 2021-10-15 | 2021-12-28 | 上海航天计算机技术研究所 | 基于知识库特征匹配的代码规则检查方法及系统 |
CN117555811A (zh) * | 2024-01-11 | 2024-02-13 | 北京邮电大学 | 基于静态符号执行的嵌入式软件分析方法、装置及存储介质 |
CN117555811B (zh) * | 2024-01-11 | 2024-03-19 | 北京邮电大学 | 基于静态符号执行的嵌入式软件分析方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515838A (zh) | 基于主题模型软件缺陷检测的方法和系统 | |
CN103336760B (zh) | 一种基于逆向工程自动生成软件文档的方法及装置 | |
CN102339252B (zh) | 基于xml中间模型以及缺陷模式匹配的静态检测系统 | |
CN109783079A (zh) | 一种基于程序分析和循环神经网络的代码注释生成方法 | |
Brody et al. | A structural model for contextual code changes | |
CN114297654A (zh) | 一种源代码层级的智能合约漏洞检测方法及系统 | |
Buinevich et al. | The life cycle of vulnerabilities in the representations of software for telecommunication devices | |
CN109933602A (zh) | 一种自然语言与结构化查询语言的转换方法及装置 | |
CN106371997A (zh) | 一种代码检查方法及装置 | |
CN113591093B (zh) | 基于自注意力机制的工业软件漏洞检测方法 | |
US10394685B2 (en) | Extensible markup language (XML) path (XPATH) debugging framework | |
Xu et al. | Multi-Granularity Code Smell Detection using Deep Learning Method based on Abstract Syntax Tree. | |
Yuan et al. | Java code clone detection by exploiting semantic and syntax information from intermediate code-based graph | |
CN111045670A (zh) | 一种二进制代码与源代码间复用关系的识别方法与装置 | |
Zhang et al. | CCEYES: an effective tool for code clone detection on large-scale open source repositories | |
CN109359055A (zh) | 一种数据测试的方法和设备 | |
CN116108143B (zh) | 基于区块链技术的数字经济监测方法及其系统 | |
Matsumoto et al. | Towards hybrid intelligence for logic error detection | |
Wen et al. | Code similarity detection using ast and textual information | |
Jubair et al. | A multi‐agent K‐means with case‐based reasoning for an automated quality assessment of software requirement specification | |
Torres et al. | Comparison of Clang abstract syntax trees using string kernels | |
Utkin et al. | Evaluating the impact of source code parsers on ML4SE models | |
CN101246473B (zh) | 一种分词系统的评测方法和一种分词评测系统 | |
Hawick | Fluent interfaces and domain-specific languages for graph generation and network analysis calculations | |
CN107391812A (zh) | 一种智能变电站scd回路校验方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |