当前位置: 首页 > 专利查询>复旦大学专利>正文

一种基于Tree-LSTM的API使用代码生成式推荐方法技术

技术编号:21088914 阅读:52 留言:0更新日期:2019-05-11 09:43
本发明专利技术属于软件工程和智能化软件开发技术领域,具体为基于Tree‑LSTM的API使用代码生成式推荐方法。本发明专利技术通过对大量包含目标API的源代码进行解析来构造大量的训练样本,在此基础上使用深度学习和统计模型训练API使用代码预测模型;代码预测模型分为:基于抽象代码树结构表示和深度学习的语句预测、基于数据依赖分析和统计模型的API调用参数预测;其中,设计了适合于Tree‑LSTM模型处理的代码的抽象树结构表示。本发明专利技术为软件开发人员提供基于代码上下文的API使用代码智能化推荐,根据已经写好的代码逐行推荐开发人员可能会用到的API使用代码,包括API对象创建/方法调用/属性访问、控制语句以及变量声明等,还会为API方法调用推荐相关的上下文变量作为参数。

【技术实现步骤摘要】
一种基于Tree-LSTM的API使用代码生成式推荐方法
本专利技术属于软件工程和智能化软件开发
,具体涉及软件开发中的智能化推荐和辅助编码技术,尤其涉及API使用代码生成式推荐方法。
技术介绍
软件开发人员经常依赖于各种通用API(ApplicationProgrammingInterface,即应用编程接口)(如JDK、Android中的API)完成自己的开发任务。这类API的数量众多,开发人员难以熟知所有API的功能及其使用场合。如何在具体的代码上下文中选择合适的API完成自身的开发任务经常成为开发人员遇到的难题。此外,许多API都有使用方式要求,例如API之间的使用组合、调用顺序、相应的控制结构(如条件判断、循环等)等,而违反API使用方式会导致代码缺陷。因此,如何在所选择的API基础上按照正确的方式进行使用也是开发人员面临的一个挑战。针对这一问题的一个有效解决方案是在软件集成开发环境等开发工具中提供代码智能化推荐能力。这种智能化推荐应当通过对于开发人员正在编写的代码上下文的分析推测有可能在当前位置上出现的API使用代码(如API方法调用)并进行推荐,从而辅助开发人员高本文档来自技高网...

【技术保护点】
1.基于Tree‑LSTM的API使用代码生成式推荐方法,其特征在于,通过对大量包含目标API的源代码进行解析来构造大量的训练样本,在此基础上使用深度学习和统计模型训练API使用代码预测模型;所述代码预测模型为两部分:基于抽象代码树结构表示和深度学习的语句预测、基于数据依赖分析和统计模型的API调用参数预测;其中,设计了一种适合于Tree‑LSTM模型处理的代码的抽象树结构表示,其中的结点表示抽象的API使用语句或变量声明/赋值语句或控制结构,边表示它们之间的控制流关系;这种表示对代码中的变量和常量进行了抽象,仅保留了API对象创建/方法调用/属性访问、控制结点以及变量声明;抽象的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个结点,从而得到带有窟窿的代码...

【专利技术属性】
技术研发人员:彭鑫陈驰赵文耘
申请(专利权)人:复旦大学
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1