一种代码注释生成方法和系统技术方案

技术编号:36192712 阅读:13 留言:0更新日期:2022-12-31 21:12
本发明专利技术公开了一种代码注释生成方法和系统,当接收到训练代码函数数据时,对训练代码函数数据进行函数预处理,生成对应的代码函数序列数据;采用多个预设目标编码器与预设目标解码器构建初始函数注释生成网络模型;采用代码函数序列数据对初始函数注释生成网络模型进行训练,生成目标函数注释生成网络模型;当接收到目标代码函数数据时,对目标代码函数数据进行函数预处理,并通过目标函数注释生成网络模型生成对应的目标代码函数注释。解决现有的代码注释生成技术对输入的源代码时进行注释时,往往会存在代码注释无法快速、准确地生成的技术问题。成的技术问题。成的技术问题。

【技术实现步骤摘要】
一种代码注释生成方法和系统


[0001]本专利技术涉及数据编译
,尤其涉及一种代码注释生成方法和系统。

技术介绍

[0002]在软件工程领域,需要软件开发人员快速、准确地理解现有的代码,从而高效地去完成系统或软件的功能变更和工程维护等任务。高质量的代码注释以自然语言的形式表示了源代码的整体思路和关键细节,是帮助开发人员快速理解源代码的关键。初级程序员也可以通过阅读高质量的源代码注释来提升编程能力。因此,如何辅助软件开发人员快速理解现有代码以提高软件开发的效率和质量,已成为软件工程领域的研究热点。
[0003]在实际的软件开发过程中,往往是由开发人员人工编写或者更新代码注释。但人工编写代码注释的效率较低,而且注释的准确度难以保证,同时还可能遭遇注释丢失、过时等问题。
[0004]当前,现有的代码注释生成技术主要是基于机器学习和深度学习算法进行检测,然而,使用基于循环递归网络RNN的神经网络模型对于较长的源代码进行编码,存在可能无法捕获代码词汇之间的长期依赖关系的问题。而目前大部分的代码注释生成方法,都采用将AST转化为序列的方式。这种方式只关注代码的序列信息,忽略了代码的结构信息,导致生成的代码注释质量较差。且在使用AST类树结构的编码器时,在一定程度上增强了对代码的结构信息的提取。但是这类编码器往往只关注当前节点及其上下节点结构信息,即没有使用代码结构的全局信息,从而导致生成的代码注释准确度不高。同时,在使用图神经网络的编码器时,往往是将整个AST作为输入。但对于较大规模的程序,尤其是程序中存在嵌套的程序结构时,其对应AST的深度和宽度都很大。因此,这一类将整个AST作为输入的方法会极大地加重了模型的训练量。基于上述缺点,通过现有的代码注释生成技术对输入的源代码时进行注释时,往往会存在代码注释无法快速、准确地生成的问题。

技术实现思路

[0005]本专利技术提供了一种代码注释生成方法和系统,解决现有的代码注释生成技术对输入的源代码时进行注释时,往往会存在代码注释无法快速、准确地生成的技术问题。
[0006]本专利技术第一方面提供的一种代码注释生成方法,包括:
[0007]当接收到训练代码函数数据时,对所述训练代码函数数据进行函数预处理,生成对应的代码函数序列数据;
[0008]采用多个预设目标编码器与预设目标解码器构建初始函数注释生成网络模型;
[0009]采用所述代码函数序列数据对所述初始函数注释生成网络模型进行训练,生成目标函数注释生成网络模型;
[0010]当接收到目标代码函数数据时,对所述目标代码函数数据进行函数预处理,并通过所述目标函数注释生成网络模型生成对应的目标代码函数注释。
[0011]可选地,所述代码函数序列数据包括原始单词编号序列、驼峰单词编号序列和ASG
语法图数据,所述当接收到训练代码函数数据时,对所述训练代码函数数据进行函数预处理,生成对应的代码函数序列数据的步骤,包括:
[0012]获取训练代码函数数据,对所述训练代码函数数据进行分割,生成对应的原始单词序列;
[0013]对所述原始单词序列内的原始单词进行编号,得到对应的所述原始单词编号序列;
[0014]对符合标识符类型的原始单词执行编号变换操作,生成对应的所述驼峰单词编号序列;
[0015]通过预设语法树解析器将所述训练代码函数数据转换为AST语法树;
[0016]对所述AST语法树进行语法图转换,生成对应的所述ASG语法图数据。
[0017]可选地,所述对符合标识符类型的原始单词执行编号变换操作,生成对应的所述驼峰单词编号序列的步骤,包括:
[0018]对符合标识符类型的原始单词执行切割操作,生成多个对应的驼峰单词与目标驼峰编号数据;
[0019]采用各所述驼峰单词与各所述驼峰单词关联的所述目标驼峰编号数据,构建多个对应的初始驼峰单词序偶数据;
[0020]按照预设切割先后顺序对多个所述初始驼峰单词序偶数据进行排列,生成多个对应的目标驼峰单词序偶数据;
[0021]将各所述目标驼峰单词序偶数据与所述原始单词编号序列中对应的原始序偶数据进行替换,生成对应的所述驼峰单词编号序列。
[0022]可选地,所述对所述AST语法树进行语法图转换,生成对应的所述ASG语法图数据的步骤,包括:
[0023]对所述AST语法树进行先序遍历切分,得到多个语句子树;
[0024]对各个所述语句子树内的每个AST单词进行编号,得到多个AST单词编号对;
[0025]采用多个所述AST单词编号对,生成多个目标AST子树;
[0026]采用全部所述目标AST子树构建ASG语法图数据。
[0027]可选地,所述采用全部所述目标AST子树构建ASG语法图数据的步骤,包括:
[0028]对所述目标AST子树中的每个所述AST单词编号对进行向量转换,生成多个对应的AST子树向量;
[0029]从多个所述目标AST子树中选取含有多个所述AST子树向量的关联目标AST子树;
[0030]将所述关联目标AST子树内的各所述AST子树向量依次连接,生成多条目标连接边;
[0031]计算所述目标连接边连接的两个所述AST子树向量之间的目标欧式距离对应的倒数,得到所述目标连接边的目标权重;
[0032]获取全部所述目标AST子树在所述AST语法树中的位置信息;
[0033]根据所述位置信息将所述目标AST子树作为目标节点,构建对应的ASG语法图数据。
[0034]可选地,所述采用所述代码函数序列数据对所述初始函数注释生成网络模型进行训练,生成目标函数注释生成网络模型的步骤,包括:
[0035]将所述代码函数序列数据输入所述初始函数注释生成网络模型,生成对应的训练代码函数注释;
[0036]连续计算所述训练代码函数注释与关联的标准代码函数注释之间的多个轮次的平均损失值;
[0037]计算每一轮次的所述平均损失值与前一轮次的所述平均损失值之差,生成多个目标损失值;
[0038]若所有所述目标损失值的绝对值均小于预设的标准阈值时,停止训练,生成目标函数注释生成网络模型。
[0039]可选地,还包括:
[0040]若任一所述目标损失值的绝对值大于或等于预设的标准阈值时,则按照预设梯度调整所述初始函数注释生成网络模型的参数,并跳转所述将所述代码函数序列数据输入所述初始函数注释生成网络模型,生成对应的训练代码函数注释的步骤。
[0041]可选地,所述目标函数注释生成网络模型包括源代码编码器、驼峰代码编码器和基于图神经网络搭建的语法树编码器、目标解码器和信息聚合层,所述当接收到目标代码函数数据时,对所述目标代码函数数据进行函数预处理,并通过所述目标函数注释生成网络模型生成对应的目标代码函数注释的步骤,包括:
[0042]对目标代码函数数据进行函数预处理,生成对应的所述原始单词编号序列、所述驼峰单词编号本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码注释生成方法,其特征在于,包括:当接收到训练代码函数数据时,对所述训练代码函数数据进行函数预处理,生成对应的代码函数序列数据;采用多个预设目标编码器与预设目标解码器构建初始函数注释生成网络模型;采用所述代码函数序列数据对所述初始函数注释生成网络模型进行训练,生成目标函数注释生成网络模型;当接收到目标代码函数数据时,对所述目标代码函数数据进行函数预处理,并通过所述目标函数注释生成网络模型生成对应的目标代码函数注释。2.根据权利要求1所述的代码注释生成方法,其特征在于,所述代码函数序列数据包括原始单词编号序列、驼峰单词编号序列和ASG语法图数据,所述当接收到训练代码函数数据时,对所述训练代码函数数据进行函数预处理,生成对应的代码函数序列数据的步骤,包括:获取训练代码函数数据,对所述训练代码函数数据进行分割,生成对应的原始单词序列;对所述原始单词序列内的原始单词进行编号,得到对应的所述原始单词编号序列;对符合标识符类型的原始单词执行编号变换操作,生成对应的所述驼峰单词编号序列;通过预设语法树解析器将所述训练代码函数数据转换为AST语法树;对所述AST语法树进行语法图转换,生成对应的所述ASG语法图数据。3.根据权利要求2所述的代码注释生成方法,其特征在于,所述对符合标识符类型的原始单词执行编号变换操作,生成对应的所述驼峰单词编号序列的步骤,包括:对符合标识符类型的原始单词执行切割操作,生成多个对应的驼峰单词与目标驼峰编号数据;采用各所述驼峰单词与各所述驼峰单词关联的所述目标驼峰编号数据,构建多个对应的初始驼峰单词序偶数据;按照预设切割先后顺序对多个所述初始驼峰单词序偶数据进行排列,生成多个对应的目标驼峰单词序偶数据;将各所述目标驼峰单词序偶数据与所述原始单词编号序列中对应的原始序偶数据进行替换,生成对应的所述驼峰单词编号序列。4.根据权利要求2所述的代码注释生成方法,其特征在于,所述对所述AST语法树进行语法图转换,生成对应的所述ASG语法图数据的步骤,包括:对所述AST语法树进行先序遍历切分,得到多个语句子树;对各个所述语句子树内的每个AST单词进行编号,得到多个AST单词编号对;采用多个所述AST单词编号对,生成多个目标AST子树;采用全部所述目标AST子树构建ASG语法图数据。5.根据权利要求4所述的代码注释生成方法,其特征在于,所述采用全部所述目标AST子树构建ASG语法图数据的步骤,包括:对所述目标AST子树中的每个所述AST单词编号对进行向量转换,生成多个对应的AST子树向量;
从多个所述目标AST子树中选取含有多个所述AST子树向量的关联目标AST子树;将所述关联目标AST子树内的各所述AST子树向量依次连接,生成多条目标连接边;计算所述目标连接边连接的两个所述AST子树向量之间的目标欧式距离对应的倒数,得到所述目标连接边的目标权重;获取全部所述目标AST子树在所述AST语法树中的位置信息;根据所述位置信息将所述目标AST子树作为目标节点,构建对应的ASG语法图数据。6.根据权利要求1所述的代码注释生成...

【专利技术属性】
技术研发人员:苏庆王豪庆
申请(专利权)人:广东工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1