-
题名基于类型辅助引导的代码注释生成模型
- 1
-
-
作者
刘利
吕韦岑
汪洋
-
机构
泸州职业技术学院人工智能与大数据学院
成都工贸职业技术学院信息工程学院
-
出处
《无线电通信技术》
北大核心
2024年第4期807-814,共8页
-
基金
泸州市科技计划项目(2021-JYJ-96)。
-
文摘
代码注释生成方法通常基于结构-序列(Structure-Sequence, Struct2Seq)框架,但忽略了代码注释的类型信息,例如操作符、字符串等。由于类型信息之间的层次具有依赖性,将类型信息引入已有的Struct2Seq框架并不适用。为了解决上述问题,提出一种基于类型辅助引导的代码注释生成(Code Comment Generation based on Type-assisted Guidance, CCG-TG)模型,将源代码视为带有类型信息的n元树。该模型包含一个关联类型编码器和一个限制类型解码器,可以对源代码进行自适应总结。此外,提出一种多级强化学习(Multi-level Reinforcement Learning, MRL)方法来优化所提模型的训练过程。在多个数据集上进行实验,与多种基准模型对比,证明所提CCG-TG模型在所有评价指标上的性能最优。
-
关键词
代码注释生成
类型信息
结构序列框架
类型辅助引导
强化学习
-
Keywords
code comment generation
type information
Struct2Seq framework
type-assisted guidance
reinforcement learning
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名融合多结构信息的代码注释生成模型
- 2
-
-
作者
余天赐
高尚
-
机构
江苏科技大学计算机学院
-
出处
《计算机工程与科学》
CSCD
北大核心
2024年第4期667-675,共9页
-
基金
国家自然科学基金(62176107,62376109)。
-
文摘
代码注释可以帮助开发人员理解代码的功能和实现方法。代码注释生成模型可以自动识别代码中的关键信息,并生成相关注释,提高代码的可读性和可维护性。现有的代码注释生成模型通常只使用抽象语法树结构信息来表示代码,导致模型生成注释质量不高。提出一种融合多结构信息的代码注释生成模型,该模型在代码抽象语法树的基础上,增加了数据流图结构信息来表示代码。模型使用Transformer的编码器对抽象语法树序列进行编码,捕获代码全局信息。使用图神经网络对数据流图进行特征提取,提供变量之间的计算依赖关系等信息。然后使用跨模态注意力机制融合抽象语法树和数据流2种特征,经过Transformer的解码器生成相应的注释。实验结果表明,与6种主流模型相比,所提出的模型在Java和Python数据集上的BLEU、METEOR和ROUGE-L指标得分均有提高,生成的注释也具有良好的可读性。
-
关键词
代码理解
代码注释生成
图神经网络
多特征融合
自然语言处理
-
Keywords
code understanding
code summarization generation
graph neural network
multi-feature fusion
natural language processing
-
分类号
TP391
[自动化与计算机技术—计算机应用技术]
-
-
题名基于双重信息检索的Bash代码注释生成方法
被引量:4
- 3
-
-
作者
陈翔
于池
杨光
濮雪莲
崔展齐
-
机构
南通大学信息科学技术学院
信息安全国家重点实验室(中国科学院信息工程研究所)
南通大学经济与管理学院
北京信息科技大学计算机学院
-
出处
《软件学报》
EI
CSCD
北大核心
2023年第3期1310-1329,共20页
-
基金
国家自然科学基金(61872263,61702041,61202006)
信息安全国家重点实验室开放课题(2020-MS-07)
+1 种基金
江苏省前沿引领技术基础研究专项(BK20202001)
江苏省重点产业专利导航项目(DH20200072-10)。
-
文摘
Bash是Linux默认的shell命令语言.它在Linux系统的开发和维护中起到重要作用.对不熟悉Bash语言的开发人员来说,理解Bash代码的目的和功能具有一定的挑战性.针对Bash代码注释自动生成问题提出了一种基于双重信息检索的方法 ExplainBash.该方法基于语义相似度和词法相似度进行双重检索,从而生成高质量代码注释.其中,语义相似度基于CodeBERT和BERT-whitening操作训练出代码语义表示,并基于欧式距离来实现;词法相似度基于代码词元构成的集合,并基于编辑距离来实现.以NL2Bash研究中共享的语料库为基础,进一步合并NLC2CMD竞赛共享的数据以构造高质量语料库.随后,选择了来自代码注释自动生成领域的9种基准方法,这些基准方法覆盖了基于信息检索的方法和基于深度学习的方法.实证研究和人本研究的结果验证了ExplainBash方法的有效性.然后设计了消融实验,对ExplainBash方法内设定(例如检索策略、BERT-whitening操作等)的合理性进行了分析.最后,基于所提方法开发出一个浏览器插件,以方便用户对Bash代码的理解.
-
关键词
程序理解
Bash代码
代码注释生成
信息检索
代码语义
代码词法
-
Keywords
program comprehension
Bash code
code comment generation
information retrieval
code semantic
code lexical
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于结构感知混合编码模型的代码注释生成方法
被引量:3
- 4
-
-
作者
蔡瑞初
张盛强
许柏炎
-
机构
广东工业大学计算机学院
-
出处
《计算机工程》
CAS
CSCD
北大核心
2023年第2期61-69,共9页
-
基金
国家自然科学基金(61876043)
国家优秀青年科学基金(62122022)
广州市科技计划项目(201902010058)。
-
文摘
代码注释能够提高程序代码的可读性,从而提升软件开发效率并降低成本。现有的代码注释生成方法将程序代码的序列表示或者抽象语法树表示输入到不同结构的编码器网络,无法融合程序代码不同抽象形式的结构特性,导致生成的注释可读性较差。构建一种结构感知的混合编码模型,同时考虑程序代码的序列表示和结构表示,通过序列编码层和图编码层分别捕获程序代码的序列信息和语法结构信息,并利用聚合编码过程将两类信息融合至解码器。设计一种结构感知的图注意力网络,通过将程序代码的语法结构的层次和类型信息嵌入图注意力网络的学习参数,有效提升了混合编码模型对程序代码的复杂语法结构的学习能力。实验结果表明,与SiT基准模型相比,混合编码模型在Python和Java数据集上的BLEU、ROUGE-L、METEOR得分分别提高了2.68%、1.47%、3.82%和2.51%、2.24%、3.55%,能生成更准确的代码注释。
-
关键词
代码注释生成
混合编码模型
图注意力网络
深度自注意力网络
自然语言处理
-
Keywords
code comment generation
hybrid encoding model
graph attention network
deep self-attention network
natural language processing
-
分类号
TP312
[自动化与计算机技术—计算机软件与理论]
-
-
题名融合语法和语义的代码注释生成方法
被引量:1
- 5
-
-
作者
王瀚森
王婷
陈铁明
季白杨
-
机构
浙江工业大学计算机科学与技术学院
-
出处
《小型微型计算机系统》
CSCD
北大核心
2023年第11期2457-2463,共7页
-
基金
浙江省自然科学基金/重大项目(LD22F020002)资助
浙江省自然科学基金项目(LY20F020027)资助
+1 种基金
浙江省重点研发计划项目(2021C01117)资助
2020年工业互联网创新发展工程项目(TC200H01V)资助。
-
文摘
代码注释生成技术通过分析源代码的语法和语义生成对应的自然语言描述,可以帮助开发人员理解代码,在软件开发和维护过程中起到重要作用.本文提出了一种基于Transformer的代码注释生成方法,可以同时学习源代码的语法结构特征和顺序语义特征.具体而言,将简化的抽象语法树(Abstract Syntax Tree,AST)通过多路树-LSTM建模,捕获树形语法结构编码,在Transformer中融合语法结构信息和顺序语义信息.实验结果表明,本文方法生成的注释质量优于其他基线方法.
-
关键词
代码注释生成
抽象语法树
神经机器翻译
TRANSFORMER
编码器-解码器
-
Keywords
code comment generation
abstract syntax tree
neural machine translation
Transformer
encoder-decoder
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于神经网络和信息检索的源代码注释生成
被引量:1
- 6
-
-
作者
沈鑫
周宇
-
机构
南京航空航天大学计算机科学与技术学院
南京航空航天大学
-
出处
《计算机系统应用》
2023年第7期1-10,共10页
-
基金
国家自然科学基金(61972197)
江苏省自然科学基金(BK20201292)。
-
文摘
源代码注释生成旨在为源代码生成精确的自然语言注释,帮助开发者更好地理解和维护源代码.传统的研究方法利用信息检索技术来生成源代码摘要,从初始源代码选择相应的词或者改写相似代码段的摘要;最近的研究采用机器翻译的方法,选择编码器-解码器的神经网络模型生成代码段的摘要.现有的注释生成方法主要存在两个问题:一方面,基于神经网络的方法对于代码段中出现的高频词更加友好,但是往往会弱化低频词的处理;另一方面,编程语言是高度结构化的,所以不能简单地将源代码作为序列化文本处理,容易造成上下文结构信息丢失.因此,本文为了解决低频词问题提出了基于检索的神经机器翻译方法,使用训练集中检索到的相似代码段来增强神经网络模型;为了学习代码段的结构化语义信息,本文提出结构化引导的Transformer,该模型通过注意力机制将代码结构信息进行编码.经过实验,结果证明该模型在低频词和结构化语义的处理上对比当下前沿的代码注释生成的深度学习模型具有显著的优势.
-
关键词
代码注释生成
抽象语法树
TRANSFORMER
语义相似度
自注意力机制
程序理解
-
Keywords
code summarization
abstract syntax tree(AST)
Transformer
semantic similarity
self-attention mechanism
programming comprehension
-
分类号
TP311.52
[自动化与计算机技术—计算机软件与理论]
TP183
[自动化与计算机技术—控制理论与控制工程]
-
-
题名基于指针生成网络的代码注释自动生成模型
被引量:5
- 7
-
-
作者
牛长安
葛季栋
唐泽
李传艺
周宇
骆斌
-
机构
计算机软件新技术国家重点实验室(南京大学)
南京大学软件学院
南京航空航天大学计算机科学与技术学院
-
出处
《软件学报》
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
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于卷积神经网络的代码注释自动生成方法
被引量:5
- 8
-
-
作者
彭斌
李征
刘勇
吴永豪
-
机构
北京化工大学信息科学与技术学院
-
出处
《计算机科学》
CSCD
北大核心
2021年第12期117-124,共8页
-
基金
国家自然科学基金(61902015,61872026)。
-
文摘
自动化代码注释生成技术通过分析源代码的语义信息生成对应的自然语言描述文本,可以帮助开发人员更好地理解程序,降低软件维护的时间成本。大部分已有技术是基于递归神经网络(Recurrent Neural Network,RNN)的编码器和解码器神经网络实现的,但这种方法存在长期依赖问题,即在分析距离较远的代码块时,生成的注释信息的准确性不高。为此,文中提出了一种基于卷积神经网络(Convolutional Neural Network,CNN)的自动化代码注释生成方法来缓解长期依赖问题,以生成更准确的注释信息。具体而言,通过构造基于源代码的CNN和基于AST的CNN来捕获源代码的语义信息。实验结果表明,与DeepCom和Hybrid-DeepCom这两种最新的方法相比,在常用的BLEU和METEOR两种评测指标下,所提方法能更好地生成代码注释,且执行时间更短。
-
关键词
程序理解
代码注释生成
卷积神经网络
长短期记忆网络
-
Keywords
Program comprehension
Code comment generation
Convolutional neural network
Long short-term memory network
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名一种用于代码注释自动生成的语法辅助复制机制
被引量:3
- 9
-
-
作者
许柏炎
蔡瑞初
梁智豪
-
机构
广东工业大学计算机学院
-
出处
《计算机工程》
CAS
CSCD
北大核心
2021年第4期92-99,共8页
-
基金
国家自然科学基金(61876043)
广东省自然科学基金(2014A030306004,2014A030308008)
+3 种基金
广东特支计划(2015TQ01X140)
NSFC-广东联合基金(U1501254)
广州市珠江科技新星专项(201610010101)
广州市科技计划项目(201902010058)。
-
文摘
现有代码注释生成方法的复制机制未考虑源代码复杂多变的语法结构,导致存在准确率和鲁棒性不高等问题。通过改进指针网络使其支持结构化数据输入,提出一种语法辅助复制机制,以用于代码注释自动生成。该机制包含节点筛选策略和去冗余生成策略2个部分。节点筛选策略基于语法信息引入掩盖变量以过滤无效节点,从而降低指针网络对复杂语法的学习成本。去冗余生成策略基于时间窗口对节点概率进行动态调整,可解决代码自动注释中关键信息缺失的问题。实验结果表明,在WikiSQL数据集上,相比基准方法,该机制的BLEU、ROUGE-2和ROUGE-L指标值分别提升14.5%、10.3%和5.5%,在ATIS数据集上,上述指标值分别提升2.8%、6.6%和2.5%,验证了该机制的有效性以及引入语法信息的必要性。
-
关键词
代码注释生成
指针网络
自然语言生成
结构信息
复制机制
-
Keywords
code comment generation
pointer network
natural language generation
structured information
copy mechanism
-
分类号
TP312
[自动化与计算机技术—计算机软件与理论]
-
-
题名代码注释自动生成方法综述
被引量:12
- 10
-
-
作者
陈翔
杨光
崔展齐
孟国柱
王赞
-
机构
南通大学信息科学技术学院
信息安全国家重点实验室(中国科学院信息工程研究所)
高安全系统的软件开发与验证技术工业和信息化部重点实验室(南京航空航天大学)
北京信息科技大学计算机学院
天津大学智能与计算学部
-
出处
《软件学报》
EI
CSCD
北大核心
2021年第7期2118-2141,共24页
-
基金
国家重点研发计划(2019AAA0104301)
国家自然科学基金(61702041,61872263,61902395,61202006)
+3 种基金
信息安全国家重点实验室开放课题(2020-MS-07)
南京航空航天大学高安全系统的软件开发与验证技术工业和信息化部重点实验室开放课题(NJ2020022)
江苏省前沿引领技术基础研究专项(BK20202001)
天津市智能制造专项资金(20193155)。
-
文摘
在软件的开发和维护过程中,与代码对应的注释经常存在缺失、不足或者与代码实际内容不匹配等问题,但手工编写代码注释对开发人员来说费时费力,且注释质量难以保证,因此亟需研究人员提出有效的代码注释自动生成方法.代码注释自动生成问题是当前程序理解研究领域的一个研究热点,对该问题进行了系统综述.主要将已有的自动生成方法细分为3类:基于模板的方法、基于信息检索的方法和基于深度学习的方法.依次对每一类方法的已有研究成果进行了系统的梳理、总结和点评.随后分析了已有的实证研究中经常使用的语料库和主要的注释质量评估方法,以利于针对该问题的后续研究可以进行合理的实验设计.最后进行总结,并对未来值得关注的研究方向进行了展望.
-
关键词
程序理解
代码注释自动生成
模板
信息检索
深度学习
机器翻译
-
Keywords
program comprehension
code comment generation
template
information retrieval
deep learning
machine translation
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于结构感知双编码器的代码注释自动生成
被引量:9
- 11
-
-
作者
徐少峰
潘文韬
熊赟
朱扬勇
-
机构
复旦大学计算机科学技术学院上海市数据科学重点实验室
-
出处
《计算机工程》
CAS
CSCD
北大核心
2020年第2期304-308,314,共6页
-
基金
国家自然科学基金(U1636207,91546105,20873999)
上海市科学技术委员会科研计划项目(16JC1400801,17511105502)
-
文摘
在软件开发过程中,性能良好的代码注释工具能够提高开发效率并降低维护成本。部分研究者将代码注释自动生成看作将源代码翻译成自然语言注释的翻译任务,但仅考虑源代码的序列信息而忽略了代码内部的结构特性。为此,在常见端到端翻译模型的基础上,利用代码抽象语法树将源代码的结构信息嵌入到编码器解码器翻译模型中,提出一种基于结构感知的双编码器解码器模型,该模型综合考虑源代码的序列信息与代码内部的结构特性。在真实数据集上的实验结果表明,相比PBMT、Seq2seq模型,该模型的BLEU得分较高,且生成的注释更准确和易读。
-
关键词
代码注释生成
抽象语法树
双编码器解码器模型
卷积神经网络
循环神经网络
-
Keywords
code annotation generation
abstract syntax tree
dual encoder and decoder model
Convolutional Neural Network(CNN)
Recurrent Neural Network(RNN)
-
分类号
TP391
[自动化与计算机技术—计算机应用技术]
-
-
题名基于多维度异质图结构的代码注释自动生成
被引量:2
- 12
-
-
作者
戎珂瑶
熊贇
-
机构
复旦大学计算机科学技术学院
-
出处
《计算机工程》
CAS
CSCD
北大核心
2023年第4期240-248,共9页
-
文摘
代码注释能够增强源代码的可读性、辅助软件开发过程,因此代码注释自动生成任务成为研究热点。然而现有工作大多只利用了源代码的序列信息或抽象语法树信息,未能充分捕捉代码语言特有的多种特征。为进一步利用源代码的多维度特征,提升注释生成的效果,构建基于多维度异质图结构的代码注释自动生成模型。利用异质图结构和图神经网络,将源代码的抽象语法树、控制流图、数据流图等进行融合并构建为具有多种节点和连边的异质表示图,以此表现代码的语义特征、序列特征、语法特征、结构特征等多维度特征。在真实数据集上的实验结果表明,该模型相较于Hybrid-DRL、NeuralCodeSum、SeqGNN等模型具有更好的效果,在BLEU-4、METEOR、ROUGE-L指标上分别最高提升1.6%、3.2%、3.1%,可获得更流畅、可读性更好的代码注释。
-
关键词
代码注释生成
异质图
图注意力网络
神经机器翻译
多维度特征
-
Keywords
code annotation generation
heterogeneous graph
graph attention network
neural machine translation
multi-dimensional feature
-
分类号
TP18
[自动化与计算机技术—控制理论与控制工程]
-
-
题名组合源码结构和语义的代码注释自动生成方法
- 13
-
-
作者
周培君
吴军华
-
机构
南京工业大学计算机科学与技术学院
-
出处
《小型微型计算机系统》
CSCD
北大核心
2021年第12期2501-2505,共5页
-
基金
国家自然科学基金青年基金项目(61802176)资助。
-
文摘
代码注释有助于提高程序的可读性和可理解性,而不断地创建和更新注释非常费时费力,这将影响对软件的理解、重用和维护.自动代码注释试图解决此类问题,其中代码的表示和文本生成是研究的核心问题.该文提出一种基于编码器-解码器结构的自动生成Java代码注释模型.方法将代码的顺序序列和代码结构作为单独的输入进行处理,允许模型学习Java方法的结构和语义;以一定的概率从模型生成的预测序列和真实词序列中采样作为下一步的输入,以提高模型的纠错恢复能力.通过与3种典型自动代码注释方法在11个Java项目上的对比实验,结果表明,提出的模型在BLEU得分上提升了16.1%,有助于提高自动代码注释的性能.
-
关键词
代码注释生成
代码表示
文本生成
编码器-解码器
-
Keywords
code comment generation
code representation
text generation
encoder-decoder
-
分类号
TP312
[自动化与计算机技术—计算机软件与理论]
-
-
题名代码注释自动生成研究进展
被引量:2
- 14
-
-
作者
赵乐乐
张丽萍
-
机构
内蒙古师范大学计算机科学技术学院
-
出处
《计算机应用研究》
CSCD
北大核心
2021年第4期982-989,共8页
-
基金
国家自然科学基金资助项目(61462071)
内蒙古自然科学基金资助项目(2018MS06009)
+1 种基金
内蒙古自治区高等学校科学研究项目(NJZY19026)
内蒙古师范大学自主科研项目(29K19ZZYF017)。
-
文摘
代码注释作为软件中的重要组成部分,在软件维护、复用等领域中发挥着重要作用。代码注释自动生成技术旨在减轻人工编写注释的工作量,从而提高软件开发效率。现有的注释自动生成方法分为基于规则、文本摘要、数据驱动、主题模型、深度学习等层次。综述了代码注释自动生成的相关概念,对比总结各类代码注释自动生成方法,对近年来代码注释自动生成相关应用进行了梳理和总结,最后对注释自动生成所面临的挑战进行了分析,展望了该领域未来的研究。
-
关键词
代码注释
代码注释自动生成
深度学习
机器翻译
-
Keywords
code comments
automatic generation of code comments
deep learning
machine translation
-
分类号
TP311.5
[自动化与计算机技术—计算机软件与理论]
-