Page 25 - 《软件学报》2021年第11期
P. 25
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
Journal of Software,2021,32(11):3351−3371 [doi: 10.13328/j.cnki.jos.006059] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
∗
编程现场上下文深度感知的代码行推荐
1
1,2
1,2
陶传奇 1,2,3 , 包盼盼 , 黄志球 , 周 宇 , 张智轶 1,2
1
(南京航空航天大学 计算机科学与技术学院,江苏 南京 211106)
2
(高安全系统的软件开发与验证技术工信部重点实验室(南京航空航天大学),江苏 南京 211106)
3 (计算机软件新技术国家重点实验室(南京大学),江苏 南京 210023)
通讯作者: 陶传奇, E-mail: taochuanqi@nuaa.edu.cn
摘 要: 在软件开发的编程现场,有大量与当前开发任务相关的信息,比如代码上下文信息、用户开发意图等.如
果能够根据已有的编程现场上下文给开发人员推荐当前代码行,不仅能够帮助开发人员更好地完成开发任务,还能
提高软件开发的效率.而已有的一些方法通常是进行代码修复或者补全,又或者只是基于关键词匹配的搜索方法,很
难达到推荐完整代码行的要求.针对上述问题,一种可行的解决方案是基于已有的海量源码数据,利用深度学习析取
代码行的相关上下文因子,挖掘隐含的上下文信息,为精准推荐提供基础.因此,提出了一种基于深度学习的编程现
场上下文深度感知的代码行推荐方法,能够在已有的大规模代码数据集中学习上下文之间潜在的关联关系,利用编
程现场已有的源码数据和任务数据得到当前可能的代码行,并推荐 Top-N 给编程人员.代码行深度感知使用 RNN
Encoder-Decoder,该框架能够将编程现场已有的若干行上文代码行进行编码,得到一个包含已有代码行上下文信息
的向量,然后根据该向量进行解码,得到预测的 Top-N 代码行输出.利用在开源平台上收集的大规模代码行数据集,
对方法进行实验并测试,结果显示,该方法能够根据已有的上下文推荐相关的代码行给开发人员,Top-10 的推荐准确
率有 60%左右,并且 MRR 值在 0.3 左右,表示用户满意的推荐项排在 N 个推荐结果中比较靠前的位置.
关键词: 编程现场;代码上下文;代码行;深度学习;RNN Encoder-Decoder
中图法分类号: TP311
中文引用格式: 陶传奇,包盼盼,黄志球,周宇,张智轶.编程现场上下文深度感知的代码行推荐.软件学报,2021,32(11):
3351−3371. http://www.jos.org.cn/1000-9825/6059.htm
英文引用格式: Tao CQ, Bao PP, Huang ZQ, Zhou Y, Zhang ZY. Code line recommendation based on deep context-awareness of
onsite programming. Ruan Jian Xue Bao/Journal of Software, 2021,32(11):3351−3371 (in Chinese). http://www.jos.org.cn/1000-
9825/6059.htm
Code Line Recommendation Based on Deep Context-awareness of Onsite Programming
1,2
1
1,2
TAO Chuan-Qi 1,2,3 , BAO Pan-Pan , HUANG Zhi-Qiu , ZHOU Yu , ZHANG Zhi-Yi 1,2
1 (College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 211106, China)
2 (Key Laboratory for Safety-critical Software Development and Verification (Nanjing University of Aeronautics and Astronautics),
Ministry of Industry and Information Technology, Nanjing 211106, China)
3 (State Key Laboratory for Novel Software Technology (Nanjing University), Nanjing 210023, China)
Abstract: In the Onsite Programming of software development, there are a lot of information related to the current development task,
such as code line context information, user development intention, etc. If the next code line or lines can be recommended to program
∗ 基金项目: 国家重点研发计划(2018YFB1003900); 国家自然科学基金(61602267, 61402229); 计算机软件新技术国家重点实验
室基金(KFKT2018B19)
Foundation item: National Key Research and Development Program of China (2018YFB1003900); National Natural Science
Foundation of China (61602267, 61402229); Open Fund of the State Key Laboratory for Novel Software Technology (KFKT2018B19)
收稿时间: 2018-12-18; 修改时间: 2020-01-06, 2020-03-10; 采用时间: 2020-04-27; jos 在线出版时间: 2020-10-12