暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
基于对象类型的API补全方法-唐泽,李传艺,葛季栋,骆斌.pdf
170
22页
0次
2022-05-19
免费下载
基于对象类型API补全方法
*
,李传艺,葛季栋,
(计算机软件新技术国家重点实验(南京大学),江苏南京210023)
通信作者:李传艺,E-mail:lcy@nju.edu.cn
摘 要:近年来,随着软件技术在各行各业、不同领域的应用不断扩展与深入,同时伴随着软件架构、服务计算等
技术的不断发展,软件行业涌现出了功能丰富且规模庞大的第三API或库,软件开发者在实现软件功能的时候
也越来越依赖这API.但学习这API的使用是非常困难且耗时的,主要有两方面的原因:1)相关文档的缺失和
错误;2)API用法的示例代码较少.因此,研究自动API补全方法以帮助开发人员在开发过程中正确且快速
的使API,具有很大的应用价值.然而,API自动补全方案多数将待补全代码段看作纯文本,忽略API
属对象类型对预API的影响.为此,探究了对象类型对补API的作用,并且在对象状态图的启发下,设计了一
种使API所属对象的类型作为特征的补全方法.具体而言,首先API调用序列中先抽取同一对象类型的子序
,利用深度学习模型编码出每个对象的状态,再利用对象状态生成整个方法块的状态表示进行补全.为了验证提
出的补全方法,6个流Java项目上进行了验证.实验结果证明,提出的考虑对象类型API补全方法在预测
准确率上明显高于基线模型.
关键词:API补全;对象类型;插件
中图法分类号:TP311
中文引用格式:唐泽,李传艺,葛季栋,骆斌.基于对象类型的API补全方法.软件学报,2022,33(5):1736–1757.http://www.jos.org.
cn/1000-9825/6559.htm
英文引用格式:TangZ,LiCY,GeJD,LuoB.MethodofAPICompletionBasedonObjectType.RuanJianXueBao/Journalof
Software,2022,33(5):1736–1757(inChinese).http://www.jos.org.cn/1000-9825/6559.htm
Method of API Completion Based on Object Type
TANGZe,LIChuan-Yi,GEJi-Dong,LUOBin
(StateKeyLaboratoryforNovelSoftwareTechnology(NanjingUniversity),Nanjing210023,China)
Abstract:In recent years, with the continuous expansion and deepening of the application of software technology in various industries and
fields, as well as the development of software architecture, services computing, etc., the software industry has emerged with feature-rich
and large-scale third-party APIs or Libraries. Software developers are increasingly relying on these APIs when implementing software
functions. However, learning the usage of these APIs is very difficult and time-consuming. There are two main reasons: 1) missing or
wrong documents; 2) few sample codes for API usage. Therefore, designing automatic API completion methods to help developers use the
API correctly and quickly has great application value. However, most of the existing API automatic completion methods regard the code
segments to be completed as plain text, ignore the impact of the object types of APIs. Therefore, this study explores the role of the object
types in completing APIs. Besides, inspired by the object state diagram, an concrete API completion method is designed and implemented
that uses the types of the objects as a novel feature. Specifically, the subsequence of the same object type is first extracted from the API
call sequence and a deep learning model is used to encode the state of each object. Then, the objects’ states is used to generate a state
*
基金项目:国家自然科学基(61802167,61972197,61802095);江苏省自然科学基(BK20201250);华为-南京大学下一代程序设计创
新实验室合作协议子项目
本文由领域软件工程专题特约编辑汤恩义副教授、江贺教授、陈俊洁副教授、李必信教授以及唐滨副教授推荐.
收稿时间:2021-08-11;修改时间:2021-10-09;采用时间:2022-01-10;jos在线出版时间:2022-01-28
软件学报ISSN1000-9825,CODENRUXUEW E-mail:jos@iscas.ac.cn
Journal of Software,2022,33(5):1736−1757[doi:10.13328/j.cnki.jos.006559] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel:+86-10-62562563
representation of the entire method block. In order to evaluate the proposed method, comprehensive experiments are conducted on six
popular java projects. The experimental results prove that the proposed API completion method achieves significantly higher predicting
accuracythanthebaselineapproaches.
Key words:APIcompletion;objecttype;plug-in
1 引 言
在软件开发过程中,为了避免重复工作,提高软件开发效率,软件开发者通常会使用一些第三方API
(applicationprogramminginterface),即应用编程接口,来协助完成软件的功能.这些第三方(Library)API通过
提供对象、方法以及变量来让软件开发者调用,借以实现一系列特定需求或功
[1]
.通过调用这API,软件开发
者可以实现某种功能而无需关注其内部的复杂细节;减少代码出错的概率;提高软件开发效率以及更加便捷地复
用代码.
然而,学会正确地使用这API需要耗费软件开发者大量的时间.一部分原因是因为这些第三方库在不断更
新迭代,API说明文档的缺失或者出错也使得学习成本增
[2]
.在这种情况下,软件开发者不得不去技术论坛、
博客或Github上寻求帮助,有时甚至需要阅读源代码来寻找这API的正确使用方法.由于第三方库的庞大数
,即使是使用过API(JDK,最新版本中类已经达3000多个),一段时间后,软件开发者也很难清晰记住
API的名称和用法.微软的一项研究表明,67.6%的受访者提到在学API的过程中受到了资源不足的困
[3]
.
软件开发者往往需要多次重复学习过程,极大地影响软件开发的效
[4]
.
为了帮助软件开发者正确且快捷地使用这些第三API,一系API方法补全工具应运而生.API方法补全
是指当程序员已经拼写出一个对象名之后,通过查询这个对象所属类别列出所有的方法供程序员选择.1展示
IDEA中智能提API方法的例子,但是集成开发环境中这些智能提示只是将所有可能API按照使用频率
从高到低排列.通过这种方式推荐API许多是与当前方法块毫不相关的,开发者仍需要在众多的候API中挑
选出正确API
[5]
.为解决这种问题,有研究者提出使用数据挖掘算法挖API使用模式进行推荐.这些算法通常
是从大量的源代码中抽取API调用序列,以模式识别或者传统序列模型的方法来研API的使用模式,进而实
API自动补全.
1 IDEA中智能补API的例子
API自动补全的意义可以总结为以下几点.
1)避免开发人员需要记住每API的用法.由于目前第三API的数量已经非常庞大,即使编程经验丰富的
开发人员也几乎不可能记住每API的具体用法.举例来说,当一个开发人员需要Java代码中比较两个字符串
的是否相(忽略大小写).他应该调String对象中equalsIgnoreCaseAPI来完成这个任务,但是很有可能
他不记得这API的全称.当他在一String类型的对象后输入(.),API补全系统会按照当前代码上下文,
String对象中每API在这里使用的可能性,排序展示给开发人员.API补全系统已经学习equalsIgnore-
CaseAPI的用法,系统会将这API排名在靠前的位置返回给开发人员.开发人员可以轻松找到这API,
并利用它来实现代码功能.
2)帮助开发人员书写错误更少的代码.API补全系统只会返回目标对象中已有API供用户选择,这可以保
证补全结果至少在语法上正确.比如用户需要系统java.swing包中JFrame对象进行补全,系统只会分析
唐泽:基于对象类型API补全方法 1737
of 22
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜