CN110297657A - 一种基于层次上下文的api推荐方法 - Google Patents
一种基于层次上下文的api推荐方法 Download PDFInfo
- Publication number
- CN110297657A CN110297657A CN201910503332.4A CN201910503332A CN110297657A CN 110297657 A CN110297657 A CN 110297657A CN 201910503332 A CN201910503332 A CN 201910503332A CN 110297657 A CN110297657 A CN 110297657A
- Authority
- CN
- China
- Prior art keywords
- api
- sequence
- level
- context
- call
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于层次上下文的API(Application Programming Interface,应用程序接口)推荐方法,通过静态分析方法中的API调用关系自动生成API序列库,然后利用基于层次上下文推断模型的方法推荐合适的API。本发明充分挖掘了程序上下文中不同调用层次的API关联关系,提升了API序列库的有效性,提高了推荐结果的准确率。
Description
技术领域
本发明涉及评估方法,具体涉及一种基于层次上下文的API推荐方法,属于API推荐技术领域。
背景技术
API是软件库提供的一组可访问的接口,软件库通过API向外提供服务,开发人员通过使用API实现代码复用,提高生产效率。今天的程序广泛使用应用程序编程接口(API):甚至“Hello World”程序也会调用API方法。软件开发人员面临的一个巨大挑战是学习并记住如何使用API。随着软件系统的规模和复杂性急剧增长,软件开发和维护的代价也在持续加大。API推荐技术能够针对大规模程序进行分析和规律挖掘,减少开发人员查找、理解、组合、调试代码的工作量,降低人工错误率,
提高软件的质量。
针对这一问题,目前普遍采取的方法是采用机器学习技术,利用已有方法的JDKAPI序列来推荐API,这种JDKAPI序列过滤掉了项目内部方法。但是项目内部方法的层次调用关系也呈现了JDKAPI的使用方式。本发明扩充了传统API序列集合的范围,利用层次上下文信息将项目内部方法也扩展成JDKAPI。相应的,提出基于层次上下文推断模型的计算方法评估两个API序列的相似值,再根据相似值的大小排序确定最终的API推荐结果。
发明内容
本发明正是针对现有技术中存在的问题,提供一种基于层次上下文的API推荐方法,该方法通过静态分析程序上下文中的API调用关系,利用不同调用层次的信息来自动地生成有效的API序列集,在此基础上采用基于图的序列相似度算法进行API推荐的方法。
为了实现上述目的,本发明的技术方案如下,一种基于层次上下文的API推荐方法,包括如下步骤:
步骤1)分析调用关系,通过静态分析java程序字节码生成调用关系图和获取项目信息,其中调用关系图的节点表示API,用JVM中间语言表示,边表示API之间的调用关系;项目信息包括项目名称,第三方lib库名称等;
步骤2)生成层次上下文信息,去除与API推荐无关的两种调用关系,并删除JDKAPI之间的调用关系来将调用关系图转化为层次上下文信息;
步骤3)生成API序列库,通过遍历层次上下文来抽取API序列,每个API序列体现了API的一种使用方法;
步骤4)抽取推荐点的上下文信息,包括推荐点API序列和推荐点类型,推荐点类型主要指JDK的类型;
步骤5)基于层次上下文推断模型来计算API推荐列表,根据推荐点类型和及其上下文信息,利用基于层次上下文推断模型的方法找出候选API序列集合,最终得到推荐API列表。
本发明方法的优选方案中,步骤2)中通过分析调用图中API调用关系,发现与API推荐无关的两种调用关系,一是递归调用(方法调用方法本身);二是下层方法调用上层方法(构成了“环”)。另外在层次上下文中,存在两类API,一类是项目内部实现的方法,称为methodAPI,记作APIm;一类是JDK实现的方法,即java语言的软件开发包提供的通用接口,称为JDKAPI,记作APIj。对于API推荐技术来说,仅需要考虑推荐项目方法直接调用的JDKAPI,不需要考虑JDKAPI之间的互相调用。基于此,生成层次上下文的方法的具体流程为:
a)遍历图中各个子图,去除构成环的多余的边,将调用关系图转化为多个调用关系树,这些树的不同层次构成了推荐需要的层次上下文信息。
b)利用项目package信息和第三方库信息,过滤掉APIj之间的调用关系,保留APIm调用APIm、APIm调用APIj两类关系信息。这些层次上下文将用于后续的API序列库的构建。
本发明方法的优选方案中,步骤3)中生成API序列库的方法的具体流程为:
对于步骤2)生成的层次上下文信息,它的每个节点是APIm或者APIj,且APIj都是叶子节点。以根节点为出发点,采用层次遍历的方法依次获得每个APIm子树的叶子节点序列,每个APIm的叶子节点序列就是一个APIj序列,APIm的个数等同于APIj序列的个数。所有的APIj序列构成API序列库。
本发明方法中,步骤5)中基于层次上下文推断模型的计算方法的具体流程为:
对于两个API序列A和B:
(a)利用1981年Smith Waterman提出的局部字符串比较算法,计算出序列A和B中任意一对API的相似度值。其中API对设为<ai,bj>,ai是序列A中的一个APIj,i是ai在序列A中的序号;bj是序列B中的一个APIj,j是bj在序列B中的序号,API对相似度记作simi,j。根据预先设置的相似度阈值σ(如0.5)得到新的API对集合,这个集合中的API对相似度都大于阈值σ。
(b)根据API对集合构造API匹配关系图,匹配关系图是一个DAG图(有向无环图),图的结点是(a)步骤中的API对。同时设置一个虚拟的“开始”结点,用于后续的带权最长路径的计算,该结点与图中所有入度为0的节点相连。图的弧表示API对在匹配序列中的先后次序关系,弧的权重等于弧头的相似度值。
(c)根据API匹配关系图的最长路径计算序列相似度,计算匹配关系图的最长带权路径和最长带权路径长度,最终的API序列相似度为带权最长路径的平均相似度,计算公式如下:
(d)生成候选API序列集合和API推荐列表。根据(a)~(c)步骤计算推荐点上下文和API序列库中API序列的相似度值,取top-k的序列为候选API序列集合。再结合推荐点类型从候选API序列集合对推荐点API进行排序,选择top-kAPI作为最终API推荐列表。
本发明方法挖掘了层次上下文中不同调用层次的API序列,提出了基于层次上下文推断模型计算方法来用于API推荐,以提高API推荐的准确率。与现有技术相比,本发明具有以下优点:
(1)提升了API序列集的有效性,传统的API推荐技术选取有效API序列的范围局限在APIj序列,没有考虑APIm序列,本发明方法利用方法调用图的层次上下文信息,挖掘出了APIm和APIj的隐含关系,进而利用隐含关系生成更有效的API序列,对现有API序列库的构建是一个有益的补充,为后续的API推荐技术的使用提供了便利。
(2)提高了推荐结果准确率,现有的API推荐思路是将API序列看成字符串来评估序列的相似情况,本发明方法考虑了API序列的顺序性和局部重复等特征,通过基于图的序列相似度计算方法,提升了API序列的匹配程度,从而减少了误报率,提高API推荐的准确率。
(3)方法简单、直观,可解释性强,本专利提出的基于层次上下文的API推荐评估属于近邻推荐,通过基于图的相似度公式计算不同API序列的距离的远近直观地说明一个API为什么会被推荐,当API数量增加时,其推荐结果也相对稳定。同时,本方法可以对增量做出预估。
附图说明
图1是本发明方法的流程图;
图2是本发明的API调用关系例图,用于说明对推荐技术的特征定义和实现;
图3是图2的层次上下文例图;
图4是图3的对应的API序列例图,它是API序列库的一个示例;
图5是本发明的序列相似度计算例图。
具体实施方式:
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
实施例1:参见图1,一种基于层次上下文的API推荐方法,本发明提供一种通过静态分析程序上下文中的API调用关系,利用不同调用层次的信息来自动地生成有效的API序列集,在此基础上采用基于层次上下文推断模型的算法进行API推荐的方法,提升了API序列集的有效性,提高了推荐结果准确率。
体系结构:图1给出了基于层次上下文的API推荐方法的体系结构,下面给出几个主要部分的具体说明。
1分析调用关系组件:
本组件的主要功能通过静态分析java程序字节码获取调用关系图和项目信息,其中项目信息包括项目名称,第三方lib库名称等;调用关系图的节点表示API,用JVM中间语言表示,边表示API之间的调用关系。
目前调用关系图生成技术可以完成这一工作,如WALA。
2生成API序列库组件:
本组件的主要功能是利用调用关系图生成层次上下文信息,通过删除JDKAPI之间的调用关系来修剪层次上下文,再通过遍历层次上下文信息抽取API序列,每个API序列体现了有效的API使用方法。
3生成推荐点上下文组件:
本组件的主要功能是抽取推荐点上下文的局部API序列和推荐点类型,作为API推荐系统的重要输入之一。
目前已有很多种局部代码分析技术可以完成这一工作,如PPA等。
4基于序列相似度的API推荐组件:
本组件的主要功能是根据推荐点类型找到候选API序列集,利用基于图的序列相似度计算方法找到推荐点的局部API序列最相似的top-k序列集,最终得到推荐点类型匹配的API。
参见图1,一种基于层次上下文的API推荐方法,具体过程如下:
步骤1)分析调用关系,通过静态分析java程序字节码生成调用关系图和获取项目信息,其中调用关系图的节点表示API,用JVM中间语言表示,边表示API之间的调用关系;项目信息包括项目名称,第三方lib库名称等;
步骤2)生成层次上下文信息,去除与API推荐无关的两种调用关系,并删除JDKAPI之间的调用关系来将调用关系图转化为层次上下文信息;
通过分析调用图中API调用关系,发现与API推荐无关的两种调用关系,一是递归调用(方法调用方法本身);二是下层方法调用上层方法(构成了“环”)。另外在层次上下文中,存在两类API,一类是项目内部实现的方法,称为methodAPI,记作APIm;一类是JDK实现的方法,即java语言的软件开发包提供的通用接口,称为JDKAPI,记作APIj。对于API推荐技术来说,仅需要考虑推荐项目方法直接调用的JDKAPI,不需要考虑JDKAPI之间的互相调用。基于此,生成层次上下文的方法的具体流程为:
a)遍历图中各个子图,去除构成环的多余的边,将调用关系图转化为多个调用关系树,这些树的不同层次构成了推荐需要的层次上下文信息。
b)利用项目package信息和第三方库信息,过滤掉APIj之间的调用关系,保留APIm调用APIm、APIm调用APIj两类关系信息。这些层次上下文将用于后续的API序列库的构建。
步骤3)生成API序列库,通过遍历层次上下文来抽取API序列,每个API序列体现了API的一种使用方法;
对于步骤2)生成的层次上下文信息,它的每个节点是APIm或者APIj,且APIj都是叶子节点。以根节点为出发点,采用层次遍历的方法依次获得每个APIm子树的叶子节点序列,每个APIm的叶子节点序列就是一个APIj序列,APIm的个数等同于APIj序列的个数。所有的APIj序列构成API序列库。
步骤4)抽取推荐点的上下文信息。包括推荐点API序列和推荐点类型,推荐点类型主要指JDK的类型。
步骤5)基于层次上下文推断模型来计算API推荐列表,根据推荐点类型和及其上下文信息,利用基于层次上下文推断模型的方法找出候选API序列集合,最终得到推荐API列表;
对于两个API序列A和B:
(a)利用1981年Smith Waterman提出的局部字符串比较算法,计算出序列A和B中任意一对API的相似度值。其中API对设为<ai,bj>,ai是序列A中的一个APIj,i是ai在序列A中的序号;bj是序列B中的一个APIj,j是bj在序列B中的序号,API对相似度记作simi,j。根据预先设置的相似度阈值σ(如0.5)得到新的API对集合,这个集合中的API对相似度都大于阈值σ。
(b)根据API对集合构造API匹配关系图。匹配关系图是一个DAG图(有向无环图),图的结点是(a)步骤中的API对。同时设置一个虚拟的“开始”结点,用于后续的带权最长路径的计算,该结点与图中所有入度为0的节点相连。图的弧表示API对在匹配序列中的先后次序关系,弧的权重等于弧头的相似度值。
(c)根据API匹配关系图的最长路径计算序列相似度。计算匹配关系图的最长带权路径和最长带权路径长度,最终的API序列相似度为带权最长路径的平均相似度,计算公式如下:
(d)生成候选API序列集合和API推荐列表。根据(a)~(c)步骤计算推荐点上下文和API序列库中API序列的相似度值,取top-k的序列为候选API序列集合。再结合推荐点类型从候选API序列集合对推荐点API进行排序,选择top-kAPI作为最终API推荐列表。
具体应用实施例:
为了方便描述,我们假定有如下简化的应用实例:选取示例字节码ant-laucher.jar,(下载路径为https://www-us.apache.org/dist/ant/binaries/)。
根据前面提到的计算步骤,依次实施:
第一步,分析调用关系,本实例经过裁剪,抽取14个API。如图2所示,图的节点是API,格式为
<类型,类名,方法名(参数列表)返回类型>;
API信息如下:
第二步,通过去除两种API推荐无关的调用关系,将调用关系图转化为层次上下文信息。示例中API3调用自身,API1、API4和API8构成递归调用,去除这两种环后生成层次上下文如图3所示:通过删除JDK API之间的调用关系来修剪层次上下文信息。示例API3是JDKAPI,它调用API6,API7实现自身功能,去除后的层次上下文信息如图4所示:
第三步,通过遍历层次上下文抽取API序列库;从图4中通过API类型识别出API1,API4,API8,API11为自有API,抽取它们的序列作为有效的层次上下文,其中API4和API8序列相同,共产生3个有效序列。如下
序列1:
[<Primordial,Ljava/net/URL,<init>(Ljava/lang/String;)V>,
<Primordial,Ljava/net/URI,toASCIIString()Ljava/lang/String;>,
<Primordial,Ljava/io/File,toURI()Ljava/net/URI;>]
序列2:
[<Primordial,Ljava/io/File,exists()Z>,
<Primordial,Ljava/lang/String,endsWith(Ljava/lang/String;)Z>,
<Primordial,Ljava/net/URL,<init>(Ljava/lang/String;)V>,
<Primordial,Ljava/net/URI,toASCIIString()Ljava/lang/String;>,
<Primordial,Ljava/io/File,toURI()Ljava/net/URI;>]
序列3:
[<Primordial,Ljava/util/ArrayList,add(Ljava/lang/Object;)Z>,
<Primordial,Ljava/lang/StringBuilder,
append(Ljava/lang/Object;)Ljava/lang/StringBuilder;>,
<Primordial,Ljava/lang/StringBuilder,<init>()V>,
<Primordial,Ljava/io/File,exists()Z>,
<Primordial,Ljava/lang/String,endsWith(Ljava/lang/String;)Z>.
<Primordial,Ljava/net/URL,<init>(Ljava/lang/String;)V>,
<Primordial,Ljava/net/URI,toASCIIString()Ljava/lang/String;>,
<Primordial,Ljava/io/File,toURI()Ljava/net/URI;>,
<Primordial,Ljava/io/File,isDirectory()Z>]
第四步,抽取推荐点上下文的局部API序列和推荐点类型;推荐点类型为Ljava/io/File,局部API序列为
[<Primordial,Ljava/lang/StringBuilder,<init>()V>,
<Primordial,Ljava/lang/StringBuilder,
append(Ljava/lang/Object;)Ljava/lang/StringBuilder;>,
<Primordial,Ljava/net/URL,<init>(Ljava/lang/String;)V>,
<Primordial,Ljava/net/URL,getFile()Ljava/lang/String;>,
<Primordial,Ljava/lang/StringBuffer,toString()Ljava/lang/String;>]。
第五步,根据推荐点类型找到候选API序列集,利用基于层次上下文推断模型的计算方法找到推荐点的局部API序列最相似的top-k序列集合,最终得到推荐点类型匹配的API;以序列1和局部API序列的相似度计算为例:
a)计算出序列A和B中任意一对API的相似度值;
设序列A=序列3,序列B=局部API序列,则a0与b0这一对API的相似度值是<Primordial,Ljava/util/ArrayList,add(Ljava/lang/Object;)Z>和<Primordial,Ljava/lang/StringBuilder,<init>()V>的Smith Waterman相似度为:
sim0,0=<a0,b0>=0.306.
其他API对的计算方法类似。
b)根据预先设置的相似度阈值σ得到有效API对集合;设置阈值为0.5。当相似度值大于0.5表示这一对API是有效API对。本例中有效API对有32个。
c)根据有效API对集合构造API序列匹配关系图;图的节点是步骤b)中的32个API对,边数为46,表示32个节点中存在46个有效的先后关系。在此基础上通过计算最长带权路径得到的最长带权路径为[2,4,8,12],对应的匹配API对是[(1,1),(4,2),(5,3),(6,4)],如图5所示,最终得到的带权路径长度为3.21。
d)根据DAG图的最长路径计算序列相似度值。
重复上述步骤,计算其他序列和局部序列的相似度,前k个最相似的API序列即为top-k相似API序列集。
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。
Claims (4)
1.一种基于层次上下文的API推荐方法,其特征在于,所述方法包括以下步骤:
步骤1)分析调用关系,通过静态分析java程序字节码生成调用关系图和获取项目信息,其中调用关系图的节点表示API,用JVM中间语言表示,边表示API之间的调用关系;项目信息包括项目名称,第三方lib库名称;
步骤2)生成层次上下文信息,去除与API推荐无关的两种调用关系,并删除JDKAPI之间的调用关系来将调用关系图转化为层次上下文信息;
步骤3)生成API序列库,通过遍历层次上下文来抽取API序列,每个API序列体现了API的一种使用方法;
步骤4)抽取推荐点的上下文信息,包括推荐点API序列和推荐点类型,推荐点类型主要指JDK的类型;
步骤5)基于层次上下文推断模型来计算API推荐列表,根据推荐点类型及其上下文信息,利用基于层次上下文推断模型的方法找出候选API序列集合,最终得到推荐API列表。
2.根据权利要求1所述的基于层次上下文的API推荐方法,其特征在于,所述步骤2)中,生成层次上下文方法的具体流程为:
a)遍历图中各个子图,去除构成环的多余的边,将调用关系图转化为多个调用关系树,这些树的不同层次构成了推荐需要的层次上下文信息;
b)利用项目package信息和第三方库信息,过滤掉APIj之间的调用关系,保留APIm调用APIm、APIm调用APIj两类关系信息,这些层次上下文将用于后续的API序列库的构建。
3.根据权利要求1所述的基于层次上下文的API推荐方法,其特征在于,所述步骤3)中生成API序列库的方法的具体流程为:
对于步骤2)生成的层次上下文信息,它的每个节点是APIm或者APIj,且APIj都是叶子节点,以根节点为出发点,采用层次遍历的方法依次获得每个APIm子树的叶子节点序列,每个APIm的叶子节点序列就是一个APIj序列,APIm的个数等同于APIj序列的个数,所有的APIj序列构成API序列库。
4.根据权利要求3所述的基于层次上下文的API推荐方法,其特征在于,所述步骤5)中基于层次上下文推断模型的计算方法的具体流程为:
对于两个API序列A和B:
(a)利用1981年Smith Waterman提出的局部字符串比较算法,计算出序列A和B中任意一对API的相似度值,其中API对设为<ai,bj>,ai是序列A中的一个APIj,i是ai在序列A中的序号;bj是序列B中的一个APIj,j是bj在序列B中的序号,API对相似度记作simi,j,根据预先设置的相似度阈值σ得到新的API对集合,这个集合中的API对相似度都大于阈值σ;
(b)根据API对集合构造API匹配关系图,匹配关系图是一个DAG图即有向无环图,图的结点是(a)步骤中的API对,同时设置一个虚拟的“开始”结点,用于后续的带权最长路径的计算,该结点与图中所有入度为0的节点相连,图的弧表示API对在匹配序列中的先后次序关系,弧的权重等于弧头的相似度值;
(c)根据API匹配关系图的最长路径计算序列相似度,计算匹配关系图的最长带权路径和最长带权路径长度,最终的API序列相似度为带权最长路径的平均相似度,计算公式如下:
(d)生成候选API序列集合和API推荐列表,根据(a)~(c)步骤计算推荐点上下文和API序列库中API序列的相似度值,取top-k的序列为候选API序列集合,再结合推荐点类型从候选API序列集合对推荐点API进行排序,选择top-kAPI作为最终API推荐列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910503332.4A CN110297657B (zh) | 2019-06-11 | 2019-06-11 | 一种基于层次上下文的api推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910503332.4A CN110297657B (zh) | 2019-06-11 | 2019-06-11 | 一种基于层次上下文的api推荐方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297657A true CN110297657A (zh) | 2019-10-01 |
CN110297657B CN110297657B (zh) | 2023-07-21 |
Family
ID=68027861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910503332.4A Active CN110297657B (zh) | 2019-06-11 | 2019-06-11 | 一种基于层次上下文的api推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297657B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750297A (zh) * | 2019-10-11 | 2020-02-04 | 南京大学 | 一种基于程序分析和文本分析的Python代码参考信息生成方法 |
CN111190641A (zh) * | 2020-01-23 | 2020-05-22 | 复旦大学 | 基于API分析的Java第三方库版本统一推荐方法 |
CN111857660A (zh) * | 2020-07-06 | 2020-10-30 | 南京航空航天大学 | 一种基于查询语句的情境感知api推荐方法及终端 |
CN114356319A (zh) * | 2021-12-31 | 2022-04-15 | 山东浪潮科学研究院有限公司 | 一种根据自然语言描述推荐api的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1989543A (zh) * | 2003-10-23 | 2007-06-27 | 微软公司 | 媒体集成层 |
CN101446899A (zh) * | 2008-12-31 | 2009-06-03 | 西安交通大学 | 一种基于本体的上下文感知应用平台框架模型 |
CN101645789A (zh) * | 2009-08-26 | 2010-02-10 | 北京邮电大学 | 基于上下文服务的会议通知系统及方法 |
US20190087318A1 (en) * | 2016-06-02 | 2019-03-21 | AO Kaspersky Lab | System and method for transferring control of instruction execution between address spaces |
-
2019
- 2019-06-11 CN CN201910503332.4A patent/CN110297657B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1989543A (zh) * | 2003-10-23 | 2007-06-27 | 微软公司 | 媒体集成层 |
CN101446899A (zh) * | 2008-12-31 | 2009-06-03 | 西安交通大学 | 一种基于本体的上下文感知应用平台框架模型 |
CN101645789A (zh) * | 2009-08-26 | 2010-02-10 | 北京邮电大学 | 基于上下文服务的会议通知系统及方法 |
US20190087318A1 (en) * | 2016-06-02 | 2019-03-21 | AO Kaspersky Lab | System and method for transferring control of instruction execution between address spaces |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750297A (zh) * | 2019-10-11 | 2020-02-04 | 南京大学 | 一种基于程序分析和文本分析的Python代码参考信息生成方法 |
CN111190641A (zh) * | 2020-01-23 | 2020-05-22 | 复旦大学 | 基于API分析的Java第三方库版本统一推荐方法 |
CN111857660A (zh) * | 2020-07-06 | 2020-10-30 | 南京航空航天大学 | 一种基于查询语句的情境感知api推荐方法及终端 |
CN114356319A (zh) * | 2021-12-31 | 2022-04-15 | 山东浪潮科学研究院有限公司 | 一种根据自然语言描述推荐api的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110297657B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297657A (zh) | 一种基于层次上下文的api推荐方法 | |
Nguyen et al. | Recommending API usages for mobile apps with hidden markov model | |
CN109635569B (zh) | 一种漏洞检测方法及装置 | |
CN110909364B (zh) | 面向源代码双极性软件安全漏洞图谱构建方法 | |
CN110287704B (zh) | 一种基于漏洞图谱的漏洞软件依赖关系构建方法 | |
EP1297419A1 (en) | Method and apparatus for extracting knowledge from software code or other structured data | |
CN104636130B (zh) | 用于生成事件树的方法和系统 | |
CN110198319A (zh) | 基于多反例的安全协议漏洞挖掘方法 | |
CN110674503B (zh) | 一种基于图卷积神经网络的智能合约死循环检测方法 | |
CN103488683B (zh) | 一种微博数据管理系统及其实现方法 | |
EP4080842A1 (en) | Method and apparatus for obtaining malicious event information, and electronic device | |
CN105630797B (zh) | 数据处理方法及系统 | |
CN107122659A (zh) | 一种快速定位Android应用软件中恶意代码或漏洞的方法 | |
CN112241439A (zh) | 一种攻击组织发现方法、装置、介质和设备 | |
CN110598417B (zh) | 一种基于图挖掘的软件漏洞检测方法 | |
CN104866764A (zh) | 一种基于对象引用图的Android手机恶意软件检测方法 | |
CN105205398B (zh) | 一种基于apk加壳软件动态行为的查壳方法 | |
CN110071871A (zh) | 一种大模式集ip地址匹配方法 | |
CN111259212B (zh) | 一种遥测数据判读方法、装置、设备及存储介质 | |
CN104376261B (zh) | 一种在取证场景下自动检测恶意进程的方法 | |
CN114154166A (zh) | 异常数据识别方法、装置、设备和存储介质 | |
CN108958847A (zh) | 一种安卓系统模拟点击自动执行方法 | |
CN109995605B (zh) | 一种流量识别方法、装置以及计算机可读存储介质 | |
CN102982282A (zh) | 程序漏洞的检测系统和方法 | |
KR101863569B1 (ko) | 머신 러닝 기반의 취약점 정보를 분류하는 방법 및 장치 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |