在软件的开发和维护过程中,与代码对应的注释经常存在缺失、不足或者与代码实际内容不匹配等问题,但手工编写代码注释对开发人员来说费时费力,且注释质量难以保证,因此亟需研究人员提出有效的代码注释自动生成方法.代码注释自动生成问题是当前程序理解研究领域的一个研究热点,论文对该问题进行了系统综述.主要将已有的自动生成方法细分为三类:基于模板的方法、基于信息检索的方法和基于深度学习的方法.论文依次对每一类方法的已有研究成果进行了系统的梳理、总结和点评.随后分析了已有的实证研究中经常使用的语料库和主要的注释质量评估方法,以利于针对该问题的后续研究可以进行合理的实验设计.最后总结全文,并对未来值得关注的研究方向进行了展望.

http://www.jos.org.cn/jos/ch/reader/view_abstract.aspx?file_no=6258&flag=1

随着软件项目的复杂度和软件产品迭代频率的不断提升,程序理解在整个软件开发环节的重要性也日益 提高.最近的一项研究工作[1]表明:开发人员平均需要花费 59%的时间在程序理解上.无疑高质量的代码注释是 提高开发人员程序理解效率的关键[2].但开发人员由于项目开发预算有限、编程经验不足或者对代码注释的重 视程度不够,经常会造成代码注释的缺失、不足或者与代码实际内容不匹配等问题.虽然借助一些工具(例如 JavaDoc[3]和 Doxygen)可以辅助生成代码注释模板,但仍然不能自动生成与代码实现功能和目的相关的描述. 如果由开发人员手工输入代码注释则费时费力,并且注释的质量很难得到保障.除此之外,已有的代码注释也需 要随着相关代码的持续演化而保持同步更新[4].因此亟需研究人员设计出有效的代码注释自动生成(code comment generation)方法.

代码注释自动生成是当前程序理解领域的一个研究热点[5].代码注释可以描述相关代码的实现功能和实 现目的.高质量的代码注释有助于提高代码的可读性和可理解性,因此在软件开发和维护过程中具有重要的作 用.代码注释自动生成问题可以认为是将基于编程语言实现的代码自动翻译成基于自然语言描述的文本,同时 希望自动生成的注释不仅可以描述代码实现的功能,而且还可以给出代码的实现目的或开发人员的设计意图 等.例如:开发人员通过阅读如下两段注释“uploads log files to the backup server”和“formats decimal values as scientific notation”,就可以直接对相关代码的目的产生清晰的认识,而不需要再深入的去理解代码的具体实现 细节.

代码注释的自动生成在很多软件工程相关任务中都能起到重要的作用.例如:当开发人员新加入某个项目 的开发团队,或者需要评估项目内的某个模块是否需要使用新的类库时,需要通过阅读和理解代码,来尽快熟悉 大规模软件项目内的某个程序模块.开发人员在审查某个程序模块的时候,需要尽快了解该模块的核心代码变 更.在软件的开发和维护过程中,开发人员需要尽快定位到自己感兴趣的代码段上.不难看出,高质量的代码注 释有助于协助开发人员提高上述任务的完成效率.

但代码注释自动生成问题在研究时也面临诸多严峻挑战:首先高质量的代码注释离不开对代码结构和语 义的高质量分析,尤其是代码语义分析在当前软件工程领域仍然是一个开放问题.其次有时候如果仅分析代码 本身,并不足以生成高质量的代码注释.因此还需要研究如何有效利用项目缺陷跟踪系统和版本控制系统内的 领域知识和来在 Stack Overflow 和 Github 的众包知识.最后当前对生成的代码注释进行质量评估时,主要采用 手工评估方法和自动评估方法.但使用手工评估方法打分时,受限于专家对编程语言和领域知识的熟悉程度,容 易存在主观性较强的问题.而自动评估方法一般使用来自机器翻译研究领域的评测指标,虽然可以自动给出生 成注释的质量评分,但代码注释自动生成问题与机器翻译问题相比,仍存在一定的差异性[6].

论文剩余内容的结构安排如下:第 1 节给出了综述的整体研究框架,随后第 2 节到第 4 节分别介绍基于模 板的生成方法、基于信息检索的生成方法和基于深度学习的生成方法的相关研究工作,并进行了点评.第 5 节 总结了常用的代码注释语料库.第 6 节将常用的代码注释质量评估方法分为两类,并分别进行了分析.最后对该 领域未来值的关注的研究方向进行了展望

成为VIP会员查看完整内容
15

相关内容

专知会员服务
9+阅读 · 2021年1月31日
专知会员服务
80+阅读 · 2021年1月24日
专知会员服务
29+阅读 · 2021年1月9日
专知会员服务
21+阅读 · 2021年1月5日
基于深度学习的数据融合方法研究综述
专知会员服务
130+阅读 · 2020年12月10日
专知会员服务
105+阅读 · 2020年10月27日
专知会员服务
38+阅读 · 2020年8月14日
多模态深度学习综述,18页pdf
专知会员服务
210+阅读 · 2020年3月29日
专知会员服务
109+阅读 · 2020年3月20日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
77+阅读 · 2019年10月12日
多模态视觉语言表征学习研究综述
专知
25+阅读 · 2020年12月3日
【中科院】命名实体识别技术综述
专知
16+阅读 · 2020年4月21日
多模态深度学习综述,18页pdf
专知
45+阅读 · 2020年3月29日
数据增强文献综述
极市平台
19+阅读 · 2019年8月4日
最全综述 | 图像分割算法
计算机视觉life
13+阅读 · 2019年6月20日
无参考图像质量评价研究进展综述
人工智能前沿讲习班
45+阅读 · 2019年2月15日
Image Captioning 36页最新综述, 161篇参考文献
专知
89+阅读 · 2018年10月23日
【论文】图上的表示学习综述
机器学习研究会
12+阅读 · 2017年9月24日
如何做文献综述:克雷斯威尔五步文献综述法
清华大学研究生教育
20+阅读 · 2017年7月10日
Fashion Meets Computer Vision: A Survey
Arxiv
5+阅读 · 2020年3月31日
OD-GCN: Object Detection by Knowledge Graph with GCN
Arxiv
4+阅读 · 2019年9月30日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
15+阅读 · 2019年3月16日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Text classification using capsules
Arxiv
5+阅读 · 2018年8月12日
Arxiv
16+阅读 · 2018年4月2日
Arxiv
7+阅读 · 2017年12月28日
VIP会员
相关VIP内容
专知会员服务
9+阅读 · 2021年1月31日
专知会员服务
80+阅读 · 2021年1月24日
专知会员服务
29+阅读 · 2021年1月9日
专知会员服务
21+阅读 · 2021年1月5日
基于深度学习的数据融合方法研究综述
专知会员服务
130+阅读 · 2020年12月10日
专知会员服务
105+阅读 · 2020年10月27日
专知会员服务
38+阅读 · 2020年8月14日
多模态深度学习综述,18页pdf
专知会员服务
210+阅读 · 2020年3月29日
专知会员服务
109+阅读 · 2020年3月20日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
77+阅读 · 2019年10月12日
相关资讯
多模态视觉语言表征学习研究综述
专知
25+阅读 · 2020年12月3日
【中科院】命名实体识别技术综述
专知
16+阅读 · 2020年4月21日
多模态深度学习综述,18页pdf
专知
45+阅读 · 2020年3月29日
数据增强文献综述
极市平台
19+阅读 · 2019年8月4日
最全综述 | 图像分割算法
计算机视觉life
13+阅读 · 2019年6月20日
无参考图像质量评价研究进展综述
人工智能前沿讲习班
45+阅读 · 2019年2月15日
Image Captioning 36页最新综述, 161篇参考文献
专知
89+阅读 · 2018年10月23日
【论文】图上的表示学习综述
机器学习研究会
12+阅读 · 2017年9月24日
如何做文献综述:克雷斯威尔五步文献综述法
清华大学研究生教育
20+阅读 · 2017年7月10日
相关论文
Fashion Meets Computer Vision: A Survey
Arxiv
5+阅读 · 2020年3月31日
OD-GCN: Object Detection by Knowledge Graph with GCN
Arxiv
4+阅读 · 2019年9月30日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
15+阅读 · 2019年3月16日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Text classification using capsules
Arxiv
5+阅读 · 2018年8月12日
Arxiv
16+阅读 · 2018年4月2日
Arxiv
7+阅读 · 2017年12月28日
微信扫码咨询专知VIP会员