-
题名基于指针生成网络的代码注释自动生成模型
被引量:5
- 1
-
-
作者
牛长安
葛季栋
唐泽
李传艺
周宇
骆斌
-
机构
计算机软件新技术国家重点实验室(南京大学)
南京大学软件学院
南京航空航天大学计算机科学与技术学院
-
出处
《软件学报》
EI
CSCD
北大核心
2021年第7期2142-2165,共24页
-
基金
国家自然科学基金(61802167,61972197,61802095)
江苏省自然科学基金(BK20201250)
华为-南京大学下一代程序设计创新实验室合作协议子项目。
-
文摘
代码注释在软件质量保障中发挥着重要的作用,它可以提升代码的可读性,使代码更易理解、重用和维护.但是出于各种各样的原因,有时开发者并没有添加必要的注释,使得在软件维护的过程中,往往需要花费大量的时间来理解代码,大大降低了软件维护的效率.近年来,多项工作利用机器学习技术自动生成代码注释,这些方法从代码中提取出语义和结构化信息后,输入序列到序列的神经网络模型生成相应的注释,均取得了不错的效果.然而,当前最好的代码注释生成模型Hybrid-DeepCom仍然存在两方面的不足.一是其在预处理时可能破坏代码结构导致不同实例的输入信息不一致,使得模型学习效果欠佳;二是由于序列到序列模型的限制,其无法在注释中生成词库之外的单词(out-of-vocabulary word,简称OOV word).例如在源代码中出现次数极少的变量名、方法名等标识符通常都为OOV词,缺少了它们,注释将难以理解.为解决上述问题,提出了一种新的代码注释生成模型CodePtr.一方面,通过添加完整的源代码编码器解决代码结构被破坏的问题;另一方面,引入指针生成网络(pointer-generator network)模块,在解码的每一步实现生成词和复制词两种模式的自动切换,特别是遇到在输入中出现次数极少的标识符时模型可以直接将其复制到输出中,以此解决无法生成OOV词的问题.最后,在大型数据集上通过实验对比了CodePtr和Hybrid-DeepCom模型,结果表明,当词库大小为30000时,CodePtr的各项翻译效果指标平均提升6%,同时,处理OOV词的效果提升近50%,充分说明了CodePtr模型的有效性.
-
关键词
软件质量保障
代码注释生成
神经网络
out-of-vocabulary
word
指针生成网络
-
Keywords
software quality assurance
source code comments generation
neural network
out-of-vocabulary word
pointer-generator network
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-