[发明专利]一种基于Tree-LSTM的API使用代码生成式推荐方法有效

专利信息
申请号: 201811501452.2 申请日: 2018-12-10
公开(公告)号: CN109739494B 公开(公告)日: 2023-05-02
发明(设计)人: 彭鑫;陈驰;赵文耘 申请(专利权)人: 复旦大学
主分类号: G06F8/35 分类号: G06F8/35;G06N3/04;G06N3/08
代理公司: 上海正旦专利代理有限公司 31200 代理人: 陆飞;陆尤
地址: 200433 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 tree lstm api 使用 代码 生成 推荐 方法
【权利要求书】:

1.基于Tree-LSTM的API使用代码生成式推荐方法,其特征在于,通过对大量包含目标API的源代码进行解析来构造大量的训练样本,在此基础上使用深度学习和统计模型训练API使用代码预测模型;所述代码预测模型为两部分:基于抽象代码树结构表示和深度学习的语句预测、基于数据依赖分析和统计模型的API调用参数预测;

其中,设计了一种适合于Tree-LSTM模型处理的代码的抽象树结构表示,其中的结点表示抽象的API使用语句或变量声明/赋值语句或控制结构,边表示它们之间的控制流关系;这种表示对代码中的变量和常量进行了抽象,仅保留了API对象创建/方法调用/属性访问、控制结点以及变量声明;抽象的API使用语句结点将代码中的API使用语句抽象为完整的方法签名;变量声明/赋值语句结点将代码中的变量声明/赋值语句抽象为忽略变量名以及赋值常量的表示;控制结构结点用If、ElseIf、Else、While、DoWhile、For、Foreach、Try、Catch、Finally、Switch、Case、Default分别表示相应的控制结构;API使用语句结点和变量声明/赋值语句结点最多只有一个子结点;这个子结点是其父节点所表示的API使用语句或变量声明/赋值语句的下一条语句的抽象表示,因此这两个结点的父子关系表示顺序流关系;控制结构结点有多个子结点分别表示其不同的控制流中的代码;在条件部分解析结束时,加入一个特殊结点ConditionEnd结点来表示条件部分的结束;当整个控制结构解析结束时,加入一个特殊结点ControlEnd结点来表示整个控制结构的结束;给定一段代码,从代码的第一行开始进行解析,迭代地得到代码的抽象树结构表示。

2.如权利要求1所述的基于Tree-LSTM的API使用代码生成式推荐方法,其特征在于,具体步骤如下:

(一)语句模型训练,包括以下子步骤:

(1)以训练数据源代码中的方法为单位进行代码静态分析,得到对应的抽象树结构表示;

(2)对每一个方法的抽象树结构表示,迭代式地从其根结点开始遍历,移除当前遍历到的结点后的N个结点,N表示待完成代码的规模;并用一个表示待完成代码即窟窿的Hole结点取代被移除掉的N个结点,从而得到带有窟窿的代码抽象树结构表示,将每一个带有窟窿的抽象树结构表示和被移除的第一个结点作为了一个训练样本;

(3)将所有训练样本中带有窟窿的抽象树结构表示中的每一个结点所表示的抽象API映射为向量,然后将所有训练样本输入Tree-LSTM网络进行训练,得到语句模型;

(二)参数模型训练,包括以下子步骤:

(1a)对于步骤(一)中得到的训练样本中的代码抽象树结构表示,结合对应的源代码进行数据依赖分析,在存在数据流依赖的结点之间加上数据依赖边,并且对于表示变量声明和赋值的结点加入其对应的变量名,从而得到加入了数据依赖的抽象树结构表示,即加入了数据依赖的抽象树结构表示比原始的抽象树结构表示多了结点之间的数据流边,以及结点所表示的变量名;

(2a)对于子步骤(1a)中得到的加入了数据依赖的抽象树结构表示,抽取其中所有长度大于2的路径,然后对于抽取得到的所有路径,统计每条路径中所有结点分别与这条路径的终结点产生数据依赖的次数;

(3a)基于子步骤(2a)中的统计次数,给定一个候选API推荐及当前加入了数据依赖的抽象树结构表示,计算其中每个结点在所有可以到达候选API推荐结点的长度大于2的路径上与候选API推荐结点产生数据依赖的次数;

(4a)根据子步骤(3a)中的统计次数,计算每个结点与候选API推荐结点产生数据依赖的概率,概率越高,其结点所表示的变量越有可能成为候选API推荐中的参数;

(5a)根据子步骤(3a)中的统计次数,计算所有候选API推荐与当前代码结合的紧密程度,概率越高,表示当前候选API推荐与当前代码的数据依赖越强,结合越紧密,然后结合语句模型给出的当前候选API推荐的概率算出最终概率,最后对所有候选API推荐进行重排序;

(三)代码推荐,包括以下子步骤:

(1b)用户输入包含待完成代码即窟窿的程序;

(2b)根据用户的输入,运行语句模型和参数模型给出API推荐结果;

(3b)用户根据API推荐结果进行选择;

(4b)根据用户的选择更新当前用户输入的程序。

3.如权利要求2所述的基于Tree-LSTM的API使用代码生成式推荐方法,其特征在于,步骤(1)和步骤(3)中采用Tree-LSTM模型进行语句预测模型训练和预测,同时采用反映API语句、控制单元及其之间的控制流关系的抽象树结构表示。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201811501452.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top