CN112115053A - 基于序列模式匹配的api误用缺陷检测方法 - Google Patents

基于序列模式匹配的api误用缺陷检测方法 Download PDF

Info

Publication number
CN112115053A
CN112115053A CN202010972588.2A CN202010972588A CN112115053A CN 112115053 A CN112115053 A CN 112115053A CN 202010972588 A CN202010972588 A CN 202010972588A CN 112115053 A CN112115053 A CN 112115053A
Authority
CN
China
Prior art keywords
api
sequence
misuse
defect
mode
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.)
Withdrawn
Application number
CN202010972588.2A
Other languages
English (en)
Inventor
李晓伟
曾杰
贲可荣
洪楠
孙文靖
张清
杨洋
李慧君
张献
郑金艳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jinghang Computing Communication Research Institute
Original Assignee
Beijing Jinghang Computing Communication Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jinghang Computing Communication Research Institute filed Critical Beijing Jinghang Computing Communication Research Institute
Priority to CN202010972588.2A priority Critical patent/CN112115053A/zh
Publication of CN112115053A publication Critical patent/CN112115053A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明属于软件缺陷检测领域,具体涉及一种基于序列模式匹配的API误用缺陷检测方法。本发明不分析API使用规约,而是根据已经发现的API误用缺陷实例,结合补丁文件中缺陷修复前后的代码信息,刻画API误用模式,然后在目标被测软件中利用改进的AC算法搜索符合误用模式的API调用序列,从而检测出相似缺陷。相比基于规约的检测方法,本发明方案有效规避了缺陷检测准确度依赖于规约描述准确性,以及部分API规约本身自带缺陷等问题。提高了API误用缺陷检测的准确度。

Description

基于序列模式匹配的API误用缺陷检测方法
技术领域
本发明属于软件缺陷检测领域,具体涉及一种基于序列模式匹配的API误用缺陷检测方法。
背景技术
随着大数据时代的到来,代码资源在开源社区呈爆炸式增长,开发人员相互间分享和复制代码已成常态,并且利用API(application programming interface,应用程序调用接口)作为已有代码库或应用框架的访问接口,实现对高质量代码模块的复用。API的提供方通过API文档中的规约说明了API如何使用,比如Java编程中常用的JavaDoc文档。但是调查显示,开发人员往往在不熟悉API规约的情况下编程,当API的使用违反了API规约中的使用规则,致使程序无法正确执行时,就产生了API误用缺陷。
为检测API误用缺陷,基于规约的检测方法对API规约进行描述,检查目标系统是否满足规约描述的性质,从而判断违例。基于规约的检测方法又分为“显”式规约和“隐”式规约检测方法。其中基于严格的形式化方法描述的为“显”式规约,形式化规约的构建过程需要考虑到API的所有使用条件,过程相当复杂,并且部分API规约本身自带缺陷。利用大数据的思想学习的方法是“隐”式规约,这些方法存在两个问题:1)缺陷检测的准确度依赖于规约的准确度;2)当一个正确调用模式没有在被挖掘样本中出现时,则不能学习出相应规则,此时基于规约的违例检测就会造成误报。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提高API误用缺陷检测的准确度以及搜索效率。
(二)技术方案
为解决上述技术问题,本发明提供一种基于序列模式匹配的API误用缺陷检测方法,所述方法包括如下步骤:
步骤1:针对API误用缺陷数据库中历史已知的API误用缺陷,抽取其缺陷代码和补丁代码,分析API误用缺陷的API误用模式;
步骤2:针对程序代码库中的目标被测代码,面向程序多路径进行分析,抽取API调用序列;
步骤3:通过序列模式匹配方法,判定步骤2所抽取的目标被测代码中的API调用序列与步骤1所分析确定的历史已知API误用缺陷的API误用模式之间是否存在关联,并报告相似缺陷。
其中,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为多余调用类型缺陷,则针对多余调用类型缺陷进行API误用模式分析,设定其API误用模式为p,判定目标被测代码T是否符合p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下两个条件:
1)s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
当条件成立时,可以认为目标被测代码T中存在与p相似的API误用缺陷。
其中,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查中之一,则针对缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查五种类型缺陷,进行API误用模式分析,设定其误用模式为p,判定目标被测代码T是否符合模式p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下三个条件:
1)API调用序列s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
3)p的正确调用序列不是s的非连续子序列;
当条件成立时,可以认为T中存在与p相似的API误用缺陷。
其中,所述步骤2中,抽取API调用序列的过程具体包括:
步骤2.1:使用JavaParser工具解析Java语言的目标被测代码,形成抽象语法树;
步骤2.2:对抽象语法树中每个函数的语句块,以及语句块中的每个语句进行分析,判断语句中是否包含控制节点:
1)无控制节点无API调用则不抽取序列,无控制节点有API调用则抽取序列;
2)有控制节点,在控制节点下的分支路径下若不存在API调用,则不抽取序列;在控制节点下的分支路径下若存在API调用,则添加新抽取序列,将当前已经抽取的序列按照路径数目复制;
步骤2.3:当函数的所有语句分析完毕,将抽取的API调用序列形成一个API调用序列集合S来输出。
其中,所述步骤3的输入为API误用模式集合P和目标被测代码的API调用序列集合S;
所述步骤3具体包括:
步骤3.1:API误用模式集合P中的每个模式p为一个序列,序列的元素为一个字符串;基于API误用模式集合P中的所有模式,按照传统前缀树构造方法,构造前缀树,其中前缀树的每个节点g表示一个字符串序列,每个边e对应一个字符串元素;
步骤3.2:前缀树中的节点集合为G,边集合为E,已覆盖状态的节点集合为A,A集合中应包含所有模式匹配成功状态的节点,初始化为根节点;待分析边的集合为B,初始化为根节点引出的边集合;
步骤3.3:对于API调用序列集合S中的每个字符串元素进行分析;如果B为空,分析完毕,转到步骤3.7;如果B不为空,则转到步骤3.4;
步骤3.4:对于B中的每个边e进行分析;边e对应的比较单元与API调用序列集合S中的字符串元素是否匹配,如果不是,继续分析下一个边e;如果是,则将改变指向的节点g加入A中,同时从集合B中去除e,并将g引出的边加入B,并转向步骤3.5;
步骤3.5:B中的所有边是否分析完毕;如果是,转向步骤3.6,如果不是,则转向步骤3.3;
步骤3.6:判断API调用序列集合S是否扫描完毕,如果是,转向步骤3.7;如果不是,转向步骤3.3;
步骤3.7:A中所有属于模式匹配成功状态的节点,其对应的模式即为匹配到的模式,作为输出。
其中,所述步骤3.1中,API误用模式集合P中的每个模式p为一个序列,序列的元素为一个字符串;
即:比如“Java.io.File.open Java.io.File.close”即为一个序列模式。
(三)有益效果
与现有技术相比较,本发明具备如下有益效果:
相比基于规约的检测方法,本发明不分析API使用规约,而是根据已经发现的API误用缺陷实例,结合补丁文件中缺陷修复前后的代码信息,刻画API误用模式,然后在目标被测软件中利用改进的AC算法搜索符合误用模式的API调用序列,从而检测出相似缺陷。相比基于规约的检测方法,本发明方案有效规避了缺陷检测准确度依赖于规约描述准确性,以及部分API规约本身自带缺陷等问题,提高了API误用缺陷检测的准确度。
为了降低计算复杂度,本发明改进AC算法进行多模式匹配。AC算法,将多个模式预处理为确定有限状态自动机,然后对目标序列进行一次扫描便可以得出序列中是否存在所有的待查模式。但是,AC算法只能用于检测连续子序列,本发明对其改进以支持非连续子序列的检测。
附图说明
图1及图2为本发明技术方案原理示意图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
针对现有技术中的问题,本发明不分析API使用规约,而是根据已经发现的API误用缺陷实例,结合补丁文件中缺陷修复前后的代码信息,刻画API误用模式(指对某个API的不恰当调用产生了错误的程序行为,并且有确定的错误原因和修复措施,同时该模式会重复出现在不同的软件产品中),然后在目标被测软件中利用改进的AC算法搜索符合误用模式的API调用序列,从而检测出相似缺陷。相比基于规约的检测方法,本发明中的方法有效规避了缺陷检测准确度依赖于规约描述准确性,以及部分API规约本身自带缺陷等问题,提高了API误用缺陷检测的准确度。
具体而言,本发明所使用改进的AC算法搜索符合误用模式的API调用序列,相比传统的AC算法降低了计算复杂度,提高了搜索效率。传统AC算法(Aho-Corasick Algorithm)搜索符合误用模式的API调用序列步骤如下:给定API误用缺陷数据库,分析出API误用缺陷数据库中所有缺陷的误用模式集合P,并按如下方式设定API误用模式中的三个要素:关键方法的集合为M,错误的API调用序列的集合为W,正确的API调用序列的集合为R。三个要素的说明及关系:首先,程序必须调用关键方法,才有可能出现该模式下的缺陷;其次,错误调用序列包含了关键方法的错误使用方式,是API缺陷发生的原因;最后,正确调用序列提供了修复该缺陷的方式。
此时,面向目标程序查找相似API误用缺陷的过程包括四个步骤:
步骤1:抽取出目标程序的API调用序列集合S;
步骤2:对于S的每一条API调用序列s进行分析,判定API调用序列s调用了M中的哪些关键方法,并按照M对应的相同下标从W和R中分别抽取出相应的API调用序列序列,形成新的集合W*和R*;
步骤3:对于W*中的每条错误的API调用序列w,判别w是否是s的非连续子序列;如果是,转向步骤4;否则,重复步骤3直到W*中的所有API调用序列分析完毕;
步骤4:如果w对应的API误用模式p属于多余调用类型,则目标程序存在与p相似缺陷并报告;如果p为非多余调用类型(即为缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查等五种类型中之一),则从R*中取出w相应下标的正确的API调用序列r,继续判定r是否是s的非连续子序列(间隔拼接形成的序列);如果是,转向步骤3;如果不是,则目标程序存在与p相似缺陷并报告;在报告相似缺陷的同时,将序列r报告为该缺陷的修复措施,并转向步骤3继续分析;
上述步骤在最坏的情况下需要对目标序列扫描(1+2|W*|)遍,为了降低计算复杂度,本发明改进Aho-Corasick(AC)算法进行多模式匹配。AC算法,将多个模式预处理为确定有限状态自动机,然后对目标序列进行一次扫描便可以得出序列中是否存在所有的待查模式。但是,AC算法只能用于检测连续子序列,本发明对其改进以支持非连续子序列的检测。
具体而言,本发明改进后的技术方案提供一种基于序列模式匹配的API误用缺陷检测方法,如图1及图2所示,所述方法包括如下步骤:
步骤1:针对API误用缺陷数据库中历史已知的API误用缺陷,抽取其缺陷代码和补丁代码,分析API误用缺陷的API误用模式;
步骤2:针对程序代码库中的目标被测代码,面向程序多路径进行分析,抽取API调用序列;
步骤3:通过序列模式匹配方法,判定步骤2所抽取的目标被测代码中的API调用序列与步骤1所分析确定的历史已知API误用缺陷的API误用模式之间是否存在关联,并报告相似缺陷。
其中,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为多余调用类型缺陷,则针对多余调用类型缺陷进行API误用模式分析,设定其API误用模式为p,判定目标被测代码T是否符合p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下两个条件:
1)s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
当条件成立时,可以认为目标被测代码T中存在与p相似的API误用缺陷。
其中,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查中之一,则针对缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查五种类型缺陷,进行API误用模式分析,设定其误用模式为p,判定目标被测代码T是否符合模式p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下三个条件:
1)API调用序列s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
3)p的正确调用序列不是s的非连续子序列;
当条件成立时,可以认为T中存在与p相似的API误用缺陷。
其中,所述步骤2中,抽取API调用序列的过程具体包括:
步骤2.1:使用JavaParser工具解析Java语言的目标被测代码,形成抽象语法树;
步骤2.2:对抽象语法树中每个函数的语句块,以及语句块中的每个语句进行分析,判断语句中是否包含控制节点:
1)无控制节点无API调用则不抽取序列,无控制节点有API调用则抽取序列;
2)有控制节点,在控制节点下的分支路径下若不存在API调用,则不抽取序列;在控制节点下的分支路径下若存在API调用,则添加新抽取序列,将当前已经抽取的序列按照路径数目复制;
步骤2.3:当函数的所有语句分析完毕,将抽取的API调用序列形成一个API调用序列集合S来输出。
其中,所述步骤3的输入为API误用模式集合P和目标被测代码的API调用序列集合S;
所述步骤3具体包括:
步骤3.1:API误用模式集合P中的每个模式p为一个序列,序列的元素为一个字符串;比如“Java.io.File.open Java.io.File.close”即为一个序列模式;基于API误用模式集合P中的所有模式,按照传统前缀树构造方法,构造前缀树,其中前缀树的每个节点g表示一个字符串序列,每个边e对应一个字符串元素;
步骤3.2:前缀树中的节点集合为G,边集合为E,已覆盖状态的节点集合为A,A集合中应包含所有模式匹配成功状态的节点,初始化为根节点;待分析边的集合为B,初始化为根节点引出的边集合;
步骤3.3:对于API调用序列集合S中的每个字符串元素进行分析;如果B为空,分析完毕,转到步骤3.7;如果B不为空,则转到步骤3.4;
步骤3.4:对于B中的每个边e进行分析;边e对应的比较单元与API调用序列集合S中的字符串元素是否匹配,如果不是,继续分析下一个边e;如果是,则将改变指向的节点g加入A中,同时从集合B中去除e,并将g引出的边加入B,并转向步骤3.5;
步骤3.5:B中的所有边是否分析完毕;如果是,转向步骤3.6,如果不是,则转向步骤3.3;
步骤3.6:判断API调用序列集合S是否扫描完毕,如果是,转向步骤3.7;如果不是,转向步骤3.3;
步骤3.7:A中所有属于模式匹配成功状态的节点,其对应的模式即为匹配到的模式,作为输出。
同传统AC算法相比,本发明改进的技术方案扫描一次字符串,即可查找出所有存在的模式,并且是以检测非连续子序列的方式。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (6)

1.一种基于序列模式匹配的API误用缺陷检测方法,其特征在于,所述方法包括如下步骤:
步骤1:针对API误用缺陷数据库中历史已知的API误用缺陷,抽取其缺陷代码和补丁代码,分析API误用缺陷的API误用模式;
步骤2:针对程序代码库中的目标被测代码,面向程序多路径进行分析,抽取API调用序列;
步骤3:通过序列模式匹配方法,判定步骤2所抽取的目标被测代码中的API调用序列与步骤1所分析确定的历史已知API误用缺陷的API误用模式之间是否存在关联,并报告相似缺陷。
2.如权利要求1所述的基于序列模式匹配的API误用缺陷检测方法,其特征在于,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为多余调用类型缺陷,则针对多余调用类型缺陷进行API误用模式分析,设定其API误用模式为p,判定目标被测代码T是否符合p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下两个条件:
1)s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
当条件成立时,可以认为目标被测代码T中存在与p相似的API误用缺陷。
3.如权利要求2所述的基于序列模式匹配的API误用缺陷检测方法,其特征在于,所述步骤1中分析API误用缺陷的API误用模式的过程,具体如下:
若历史已知API误用缺陷为缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查中之一,则针对缺失调用、错误调用、缺失前置、缺失异常处理、方法的返回结果未检查五种类型缺陷,进行API误用模式分析,设定其误用模式为p,判定目标被测代码T是否符合模式p;
具体判定过程为只需要判定目标被测代码T中是否存在一个API调用序列s同时满足以下三个条件:
1)API调用序列s调用了p的关键方法;
2)p的错误调用序列是s的非连续子序列;
3)p的正确调用序列不是s的非连续子序列;
当条件成立时,可以认为T中存在与p相似的API误用缺陷。
4.如权利要求3所述的基于序列模式匹配的API误用缺陷检测方法,其特征在于,所述步骤2中,抽取API调用序列的过程具体包括:
步骤2.1:使用JavaParser工具解析Java语言的目标被测代码,形成抽象语法树;
步骤2.2:对抽象语法树中每个函数的语句块,以及语句块中的每个语句进行分析,判断语句中是否包含控制节点:
1)无控制节点无API调用则不抽取序列,无控制节点有API调用则抽取序列;
2)有控制节点,在控制节点下的分支路径下若不存在API调用,则不抽取序列;在控制节点下的分支路径下若存在API调用,则添加新抽取序列,将当前已经抽取的序列按照路径数目复制;
步骤2.3:当函数的所有语句分析完毕,将抽取的API调用序列形成一个API调用序列集合S来输出。
5.如权利要求4所述的基于序列模式匹配的API误用缺陷检测方法,其特征在于,
所述步骤3的输入为API误用模式集合P和目标被测代码的API调用序列集合S;
所述步骤3具体包括:
步骤3.1:API误用模式集合P中的每个模式p为一个序列,序列的元素为一个字符串;基于API误用模式集合P中的所有模式,按照传统前缀树构造方法,构造前缀树,其中前缀树的每个节点g表示一个字符串序列,每个边e对应一个字符串元素;
步骤3.2:前缀树中的节点集合为G,边集合为E,已覆盖状态的节点集合为A,A集合中应包含所有模式匹配成功状态的节点,初始化为根节点;待分析边的集合为B,初始化为根节点引出的边集合;
步骤3.3:对于API调用序列集合S中的每个字符串元素进行分析;如果B为空,分析完毕,转到步骤3.7;如果B不为空,则转到步骤3.4;
步骤3.4:对于B中的每个边e进行分析;边e对应的比较单元与API调用序列集合S中的字符串元素是否匹配,如果不是,继续分析下一个边e;如果是,则将改变指向的节点g加入A中,同时从集合B中去除e,并将g引出的边加入B,并转向步骤3.5;
步骤3.5:B中的所有边是否分析完毕;如果是,转向步骤3.6,如果不是,则转向步骤3.3;
步骤3.6:判断API调用序列集合S是否扫描完毕,如果是,转向步骤3.7;如果不是,转向步骤3.3;
步骤3.7:A中所有属于模式匹配成功状态的节点,其对应的模式即为匹配到的模式,作为输出。
6.如权利要求5所述的基于序列模式匹配的API误用缺陷检测方法,其特征在于,
所述步骤3.1中,API误用模式集合P中的每个模式p为一个序列,序列的元素为一个字符串;
即:比如“Java.io.File.open Java.io.File.close”即为一个序列模式。
CN202010972588.2A 2020-09-16 2020-09-16 基于序列模式匹配的api误用缺陷检测方法 Withdrawn CN112115053A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010972588.2A CN112115053A (zh) 2020-09-16 2020-09-16 基于序列模式匹配的api误用缺陷检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010972588.2A CN112115053A (zh) 2020-09-16 2020-09-16 基于序列模式匹配的api误用缺陷检测方法

Publications (1)

Publication Number Publication Date
CN112115053A true CN112115053A (zh) 2020-12-22

Family

ID=73802203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010972588.2A Withdrawn CN112115053A (zh) 2020-09-16 2020-09-16 基于序列模式匹配的api误用缺陷检测方法

Country Status (1)

Country Link
CN (1) CN112115053A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214399A (zh) * 2020-09-16 2021-01-12 北京京航计算通讯研究所 基于序列模式匹配的api误用缺陷检测系统
CN114153721A (zh) * 2021-11-16 2022-03-08 大连理工大学 一种基于决策树算法的api误用检测方法
CN115718696A (zh) * 2022-10-18 2023-02-28 国网智能电网研究院有限公司 源码密码学误用检测方法、装置、电子设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286132A (zh) * 2008-06-02 2008-10-15 北京邮电大学 一种基于软件缺陷模式的测试方法及系统
US20130061211A1 (en) * 2011-09-01 2013-03-07 Infosys Limited Systems, methods, and computer-readable media for measuring quality of application programming interfaces
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN109408371A (zh) * 2018-09-18 2019-03-01 深圳壹账通智能科技有限公司 软件缺陷分析录入方法、装置、计算机设备和存储介质
CN109857648A (zh) * 2019-01-14 2019-06-07 复旦大学 一种api误用的变更模式挖掘方法
CN110362968A (zh) * 2019-07-16 2019-10-22 腾讯科技(深圳)有限公司 信息检测方法、装置及服务器
CN111400724A (zh) * 2020-05-08 2020-07-10 中国人民解放军国防科技大学 基于代码相似性分析的操作系统脆弱性检测方法、系统及介质
CN112214399A (zh) * 2020-09-16 2021-01-12 北京京航计算通讯研究所 基于序列模式匹配的api误用缺陷检测系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286132A (zh) * 2008-06-02 2008-10-15 北京邮电大学 一种基于软件缺陷模式的测试方法及系统
US20130061211A1 (en) * 2011-09-01 2013-03-07 Infosys Limited Systems, methods, and computer-readable media for measuring quality of application programming interfaces
CN108932192A (zh) * 2017-05-22 2018-12-04 南京大学 一种基于抽象语法树的Python程序类型缺陷检测方法
CN109408371A (zh) * 2018-09-18 2019-03-01 深圳壹账通智能科技有限公司 软件缺陷分析录入方法、装置、计算机设备和存储介质
CN109857648A (zh) * 2019-01-14 2019-06-07 复旦大学 一种api误用的变更模式挖掘方法
CN110362968A (zh) * 2019-07-16 2019-10-22 腾讯科技(深圳)有限公司 信息检测方法、装置及服务器
CN111400724A (zh) * 2020-05-08 2020-07-10 中国人民解放军国防科技大学 基于代码相似性分析的操作系统脆弱性检测方法、系统及介质
CN112214399A (zh) * 2020-09-16 2021-01-12 北京京航计算通讯研究所 基于序列模式匹配的api误用缺陷检测系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SVEN AMANN等: ""MUBench: A Benchmark for API-Misuse Detectors"", 《2016 IEEE/ACM 13TH WORKING CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR)》 *
汪昕等: "基于深度学习的API误用缺陷检测", 《软件学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214399A (zh) * 2020-09-16 2021-01-12 北京京航计算通讯研究所 基于序列模式匹配的api误用缺陷检测系统
CN112214399B (zh) * 2020-09-16 2023-01-10 北京京航计算通讯研究所 基于序列模式匹配的api误用缺陷检测系统
CN114153721A (zh) * 2021-11-16 2022-03-08 大连理工大学 一种基于决策树算法的api误用检测方法
CN115718696A (zh) * 2022-10-18 2023-02-28 国网智能电网研究院有限公司 源码密码学误用检测方法、装置、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN112214399B (zh) 基于序列模式匹配的api误用缺陷检测系统
CN112115053A (zh) 基于序列模式匹配的api误用缺陷检测方法
CN111459799B (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
CN110399300B (zh) 一种基于动态类型感知的Python软件模糊测试方法
CN114077741B (zh) 软件供应链安全检测方法和装置、电子设备及存储介质
CN109670318B (zh) 一种基于核控制流图循环验证的漏洞检测方法
CN111400724A (zh) 基于代码相似性分析的操作系统脆弱性检测方法、系统及介质
CN111914260B (zh) 一种基于函数差分的二进制程序漏洞检测方法
CN112733156A (zh) 基于代码属性图的软件脆弱性智能检测方法、系统及介质
CN113297580B (zh) 基于代码语义分析的电力信息系统安全防护方法及装置
CN113326187A (zh) 数据驱动的内存泄漏智能化检测方法及系统
CN112651028A (zh) 基于上下文语义和补丁验证的漏洞代码克隆检测方法
CN116383833A (zh) 软件程序代码的测试方法及其装置、电子设备、存储介质
US7496898B1 (en) Error analysis and diagnosis for generic function calls
CN112965838B (zh) 并发程序的数据竞争检查方法及装置
US20150193617A1 (en) Signature verification device, signature verification method, and program
Sun et al. Propagating bug fixes with fast subgraph matching
Jang et al. Automatic prevention of buffer overflow vulnerability using candidate code generation
CN108804308B (zh) 新版本程序缺陷检测方法及装置
CN110928793A (zh) 一种正则表达式检测方法、装置及计算机可读存储介质
CN112905370A (zh) 拓扑图生成方法、异常检测方法、装置、设备及存储介质
CN113836023B (zh) 一种基于体系结构交叉检查的编译器安全性测试方法
CN115408700A (zh) 基于二进制程序模块化的开源组件检测方法
CN115577364A (zh) 一种多静态分析工具结果融合的漏洞挖掘方法
CN115310095A (zh) 一种区块链智能合约混合形式化验证方法及系统

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20201222

WW01 Invention patent application withdrawn after publication