[发明专利]一种基于对象分类和自适应子图匹配的API推荐方法在审
申请号: | 201711188298.3 | 申请日: | 2017-11-21 |
公开(公告)号: | CN109814855A | 公开(公告)日: | 2019-05-28 |
发明(设计)人: | 周毓明;贾倩倩 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/33 | 分类号: | G06F8/33;G06F8/35 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210093 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 概率 对象分类 方法使用 模式串 自适应 图库 匹配 集合 方法推荐 使用模式 搜索匹配 语言模型 字母排序 剪枝 调用 排序 抽取 | ||
1.一种基于对象分类和自适应子图匹配的API推荐方法,首先从GitHub上下载若干项目源代码,使用抽象语法树从方法级别进行语法分析,得到若干API使用模式串;针对API模式串中的每一个API方法,依据其所属的类进行分组,由此便可得到类库中每个类的API方法使用模式串;根据抽取出的属于单个类的API方法模式串建立图库GDB(GraphDataBase),当开发者开发过程中需要在位置L处进行API方法推荐时,则会从位置L的上文环境中抽取与位置L处待推荐方法同属一个类库的API方法串,建立子图SG(SubGraph),再使用基于剪枝的自适应子图匹配算法(Pruning-Based Adaptive Subgraph MatchingAlgorithm)在图库GDB中搜索最佳可能匹配结果,从而生成推荐方法列表,呈现给开发人员。
2.根据权利要求1中所述的一种基于对象分类和自适应子图匹配的API推荐方法,其特征是包括以下步骤:
1)根据从GitHub中下载得到的源代码文件,建立抽象语法树AST(Abstract SyntaxTree),通过语法分析得到方法级别的API方法调用模式串;
2)针对API方法调用模式串中的每一个调用方法,根据其所属的类库进行分组,得到类库中每个类中的API方法使用模式串;
3)根据步骤2)中得到的各个类库的API模式串,进行统计学习,建立图库GDB;
4)当开发人员需要在位置L处进行API方法推荐时,按照步骤1)和步骤2)中所描述的方法从位置L处的上文代码中抽取出与待推荐位置的API方法属于相同类的API方法使用模式串,生成子图SG;
5)按照Pruning-based ASMA模型所描述,首先使用剪枝法对步骤4)中生成的待匹配子图SG进行剪枝,得到子图集合SGs,对于子图集合中的任一子图,先计算其概率Prob1,再使用该子图在步骤3)中建立的图库GDB中进行搜索匹配,得到推荐的结果以及对应的概率Prob2,将Prob1以及Prob2相结合,得到每个结果所对应的概率;
6)通过步骤5)即可得到的推荐API方法以及每个方法对应的概率,将概率从高至低依次排序,得到最终的API方法序列,呈现给开发人员。
3.根据权利要求2中所述的一种基于对象分类和自适应子图匹配的API推荐方法,其特征是将步骤1)中到的API方法使用模式串,根据其中API方法所属的类库进行分组,得到类库中每个类中的API方法使用模式串。其主要步骤是:先从GitHub上下载项目源代码,对于其中的每一个源代码文件,分别建立抽象语法树(Abstract Syntax Tree,简记AST),进行方法级别的语法分析,得到方法级别的API方法使用模式串,根据API方法使用模式串中的每一个API方法所属的类进行分组,得到属于每一个类的API方法使用模式串。最终使用上述步骤得到的分类后的API方法使用模式串进行统计学习,建立图库GDB。
4.根据权利要求2所述的一种基于对象分类和自适应子图匹配的API推荐方法,其特征是基于剪枝的自适应子图匹配算法Pruning-Based ASMA(Pruning-Based AdaptiveSubgraph Matching Algorithm)。当开发者开发过程中,需要在位置L处进行API方法推荐时,首先会采用同上述步骤2)相同的方法,建立抽象语法树进行语法分析,得到位置L上文中已有API调用方法串,再采取步骤3)中所述的方法进行过滤,得到与位置L处所属类库一致的API方法串,建立子图,Pruning-Based ASMA会自动地对当前子图SG进行剪枝操作,得到若干待匹配的子图集合SGs<SubGraph1,SubGraph2,SubGraph3,……>,针对子图集合中的每个子图(以SubGraph1为例),先计算子图SubGraph1对应的概率Prob1,,再使用SubGraph1在图库GDB中搜索最佳匹配图,从而得到可能的推荐结果<Res1,Res2,……>,以及对应的概率为<Prob2_1,Prob2_2,……>,再将推荐结果的概率与用于搜索匹配的子图概率相结合,得到最终推荐结果<Res1,Res2,……>,及其相应的概率为<Prob1*Prob2_1,Prob1*Prob2_2,……>。按照此方法,依次计算子图集合中其余子图所得到的结果及概率,将概率按照从高至低的顺序进行排序,便可得到最终的推荐结果列表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711188298.3/1.html,转载请声明来源钻瓜专利网。