Page 224 - 《软件学报》2021年第7期
P. 224
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
Journal of Software,2021,32(7):21422165 [doi: 10.13328/j.cnki.jos.006270] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
基于指针生成网络的代码注释自动生成模型
1,2
1,2
1,2
3
1,2
1,2
牛长安 , 葛季栋 , 唐 泽 , 李传艺 , 周 宇 , 骆 斌
1
(计算机软件新技术国家重点实验室(南京大学),江苏 南京 210023)
2
(南京大学 软件学院,江苏 南京 210093)
3 (南京航空航天大学 计算机科学与技术学院,江苏 南京 211106)
通讯作者: 李传艺, E-mail: lcy@nju.edu.cn
摘 要: 代码注释在软件质量保障中发挥着重要的作用,它可以提升代码的可读性,使代码更易理解、重用和维
护.但是出于各种各样的原因,有时开发者并没有添加必要的注释,使得在软件维护的过程中,往往需要花费大量的
时间来理解代码,大大降低了软件维护的效率.近年来,多项工作利用机器学习技术自动生成代码注释,这些方法从
代码中提取出语义和结构化信息后,输入序列到序列的神经网络模型生成相应的注释,均取得了不错的效果.然而,
当前最好的代码注释生成模型 Hybrid-DeepCom 仍然存在两方面的不足.一是其在预处理时可能破坏代码结构导致
不同实例的输入信息不一致,使得模型学习效果欠佳;二是由于序列到序列模型的限制,其无法在注释中生成词库之
外的单词(out-of-vocabulary word,简称 OOV word).例如在源代码中出现次数极少的变量名、方法名等标识符通常
都为 OOV 词,缺少了它们,注释将难以理解.为解决上述问题,提出了一种新的代码注释生成模型 CodePtr.一方面,通
过添加完整的源代码编码器解决代码结构被破坏的问题;另一方面,引入指针生成网络(pointer-generator network)模
块,在解码的每一步实现生成词和复制词两种模式的自动切换,特别是遇到在输入中出现次数极少的标识符时模型
可以直接将其复制到输出中,以此解决无法生成 OOV 词的问题.最后,在大型数据集上通过实验对比了 CodePtr 和
Hybrid-DeepCom模型,结果表明,当词库大小为30 000时,CodePtr的各项翻译效果指标平均提升6%,同时,处理OOV
词的效果提升近 50%,充分说明了 CodePtr 模型的有效性.
关键词: 软件质量保障;代码注释生成;神经网络;out-of-vocabulary word;指针生成网络
中图法分类号: TP311
中文引用格式: 牛长安,葛季栋,唐泽,李传艺,周宇,骆斌.基于指针生成网络的代码注释自动生成模型.软件学报,2021,32(7):
21422165. http://www.jos.org.cn/1000-9825/6270.htm
英文引用格式: Niu CA, Ge JD, Tang Z, Li CY, Zhou Y, Luo B. Automatic generation of source code comments model based on
pointer-generator network. Ruan Jian Xue Bao/Journal of Software, 2021,32(7):21422165 (in Chinese). http://www.jos.org.cn/
1000-9825/6270.htm
Automatic Generation of Source Code Comments Model Based on Pointer-generator Network
1,2
1,2
1,2
3
1,2
NIU Chang-An , GE Ji-Dong , TANG Ze , LI Chuan-Yi , ZHOU Yu , LUO Bin 1,2
1
(State Key Laboratory for Novel Software Technology (Nanjing University), Nanjing 210023, China)
2
(Software Institute, Nanjing University, Nanjing 210093, China)
基金项目: 国家自然科学基金(61802167, 61972197, 61802095); 江苏省自然科学基金(BK20201250); 华为-南京大学下一代
程序设计创新实验室合作协议子项目
Foundation item: National Natural Science Foundation of China (61802167, 61972197, 61802095); Natural Science Foundation of
Jiangsu Province, China (BK20201250); Cooperation Fund of Huawei-NJU Creative Laboratory for the Next Programming
本文由“面向非确定性的软件质量保障方法与技术”专题特约编辑陈俊洁副教授、汤恩义副教授、何啸副教授以及马晓星教
授推荐.
收稿时间: 2020-09-15; 修改时间: 2020-10-26; 采用时间: 2020-12-14; jos 在线出版时间: 2021-01-22