[发明专利]一种基于对象类型的API补全方法在审
申请号: | 202110404660.6 | 申请日: | 2021-04-15 |
公开(公告)号: | CN113076089A | 公开(公告)日: | 2021-07-06 |
发明(设计)人: | 葛季栋;李传艺;唐泽;陈恒 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/70;G06N3/04;G06N3/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 对象 类型 api 方法 | ||
本发明公开了一种基于对象类型的API补全方法,包括以下步骤:基于Github代码托管平台生成Java代码数据集;基于Java代码数据集,使用eclipseAST的API解析抽象语法树,再遍历抽象语法树,生成GROUM,构建一个Java JDK的API调用序列数据集;基于LSTM和注意力机制搭建深度学习训练模型;开发一个基于本发明模型的IDEA插件;借助插件客户端对当前代码分析后获取API序列和空缺位置,传给服务器,服务器中模型解析结果并返回API补全推荐列表。本发明旨在为程序开发者在实际编程过程中,提供切实可用的API补全方案,实现了一个基于对象类型的深度学习模型以及IDEA插件用于API补全推荐,提高了API补全的准确性与易用性。
技术领域
本发明涉及一种API补全方法,具体涉及一种基于对象类型的API补全方法,属于软件工程和深度学习领域。
背景技术
在软件开发过程中,为了避免重复工作,提高软件开发效率,软件开发者通常会使用一些第三方的API,即应用编程接口,来协助完成软件的功能。这些第三方库的API通过提供对象、方法以及变量来让软件开发者调用,借以实现一系列特定需求或功能。通过调用这些API,软件开发者可以实现某种功能而无需关注其内部的复杂细节;减少代码出错的概率;提高软件开发效率以及更加便捷地复用代码。
然而,学会正确地使用这些API需要耗费软件开发者大量地时间。由于这些第三方库也在不断地迭代更新,其中相当一部分缺少API说明文档。有些即使提供API说明文档的,也有可能存在一些错误。在这种情况下,软件开发者不得不去技术论坛、博客或者Github上寻求帮助,有时甚至需要阅读源代码来寻找这些API的正确使用方法。由于第三方库的庞大数量,即使是使用过的API,比如JDK,最新版本中类已经达到3000多个,一段时间后,软件开发者也很难清晰记住对应API的名称和用法。微软的一项研究表明,67.6%的受访者提到在学习API的过程中受到了资源不足的困扰。软件开发者往往需要多次重复学习过程,极大地影响软件开发的效率。
为了帮助软件开发者正确且快捷地使用这些第三方API,一系列API方法补全工具应运而生。API方法补全是指当程序员已经拼写出一个对象名之后,通过查询这个对象所属类别列出所有的方法供程序员选择。一个在IDEA中智能提示API方法的例子,在集成开发环境中这些智能提示只是将所有可能的API按照使用频率从高到低排列。通过这种方式推荐的API许多是与当前方法块毫不相关的,开发者仍需要在众多的候选API中挑选出正确的API。为解决这种问题,有研究者提出使用数据挖掘算法挖掘API使用模式进行推荐。这些算法通常是从大量的源代码中抽取出API调用序列,以模式识别或者传统序列模型的方法来研究API的使用模式,进而实现API自动补全。
还有一些工作使用深度学习模型来实现API补全任务。长短期记忆模型LSTM是一种时间循环神经网络,被广泛应用于文本处理。它是为了解决传统时间循环网络中存在的长期依赖问题而被专门设计出来的。传统循环网络在利用BP反向传播时,误差会逐级减少。这导致计算过程中,梯度会随着时间序列的增长而指数下降,导致网络权重更新缓慢,LSTM采用门控机制来解决这个问题。注意力机制是由Chorowski等人为机器翻译提出的,其动机来源于人类阅读文本时,会对某些重要的词信息给予额外的关注。它首先被应用于Encoder-Decoder模型,即当需要翻译某个词时,对源语言中的某些词进行特殊关注。在API补全任务中,通过使用注意力机制,模型可以动态地关注有助于执行当前任务的输入的某些部分,将这种相关性概念结合起来。除了可以帮助任务提升性能外,注意力机制还可以提高模型的可解释性,在一定程度上克服循环神经网络中的一些挑战,例如随着输入长度的增加造成的性能下降,以及输入顺序不合理导致的计算效率低下。
为了满足开发人员实际编程需要,提供切实可用的API方法补全,主要研究目标在于设计和实现一个考虑对象特征的API补全方法,同时实现一个支持离线和在线的集成开发环境插件,提供API方法补全服务。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110404660.6/2.html,转载请声明来源钻瓜专利网。