代码注释生成方法、装置、电子设备及存储介质与流程
- 国知局
- 2024-07-31 22:47:20
本技术涉及计算机,具体涉及一种代码注释生成方法、装置、电子设备及存储介质。
背景技术:
1、随着信息社会的快速发展,各种各样的互联网软件层出不穷,在这些软件中融合了各种开发人员的高水平代码。在不断的开发和迭代中,代码的开发和维护已成为开发者面临的主要挑战之一。据悉,在软件开发的生命周期中,将近60%的时间是用于维护代码,其中大部分时间是用在理解相关源代码的意义上,因此,如何自动对代码进行准确的注释成为了代码开发人员的关注焦点。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供了一种代码注释生成方法、装置、电子设备及存储介质。
2、第一方面,本技术提供了一种代码注释生成方法,所述方法包括:
3、将待注释的目标代码转换成第一抽象语法树;
4、从预设的训练模型中确定与所述第一抽象语法树相似的目标抽象语法树;
5、基于所述训练模型确定所述目标抽象语法树对应的目标相似代码;
6、将所述目标代码和所述目标相似代码输入所述训练模型,分别得到每个时间步对应的目标代码的第一隐藏状态和所述目标相似代码的第二隐藏状态;
7、根据相同时间步对应的所述第一隐藏状态和所述第二隐藏状态确定所述相同时间步的下一时间步的注释的条件概率分布;
8、根据所有所述条件概率分布生成所述目标代码的目标注释。
9、可选地,从预设的训练模型中确定与所述第一抽象语法树相似的目标抽象语法树之前,所述方法还包括:
10、构建模型训练的数据集;
11、根据所述数据集对初始模型进行训练,得到所述训练模型。
12、可选地,构建模型训练的数据集,包括:
13、获取原始代码数据和所述原始代码数据对应的原始代码注释;
14、对所述原始代码数据进行分层处理,得到多个层级代码数据;
15、对所述原始代码注释进行分类处理,得到多个分类注释数据;
16、将多个所述层级代码数据和多个所述分类注释数据作为模型训练的所述数据集。
17、可选地,所述层级代码数据至少包括适配层代码数据、应用层代码数据、领域层代码数据和基础设施层代码数据中的一种;
18、所述分类注释数据至少包括类注释、方法注释和字段注释中的一种。
19、可选地,将待注释的目标代码转换成第一抽象语法树,包括:
20、对所述目标代码进行词法分析,得到多个词法单元;
21、根据语法规则对所述词法单元进行语法分析,得到所述词法单元对应的树状结构;
22、基于预设规则将多个所述树状结构构建为抽象语法树架构;
23、对所述抽象语法树架构的节点配置节点属性,得到所述第一抽象语法树。
24、可选地,从预设的训练模型中确定与所述第一抽象语法树相似的目标抽象语法树,包括:
25、获取对所述训练模型进行训练的数据集;其中,所述数据集至少包括原始代码数据;
26、获取所述原始代码数据对应的多个第二抽象语法树;
27、对所述第一抽象语法树和所述第二抽象语法树进行特征匹配,确定目标相似度;
28、从多个所述目标相似度中确定最高相似度;
29、将所述最高相似度对应的所述第二抽象语法树作为与所述第一抽象语法树相似的所述目标抽象语法树。
30、可选地,基于所述训练模型确定所述目标抽象语法树对应的目标相似代码,包括:
31、获取所述第二抽象语法树对应的所述训练模型的所述原始代码数据中的目标代码片段;
32、将所述目标代码片段作为所述目标相似代码。
33、可选地,根据相同时间步对应的所述第一隐藏状态和所述第二隐藏状态确定所述相同时间步的下一时间步的注释的条件概率分布,包括:
34、获取所述训练模型的线性层的第一权重矩阵和隐藏层的第二权重矩阵;
35、获取所述线性层的第一偏差向量,以及获取所述隐藏层的第二偏差向量;
36、根据所述第一隐藏状态、所述第二隐藏状态、所述第一权重矩阵、所述第二权重矩阵、所述第一偏差向量和所述第二偏差向量,确定下一时间步的注释的条件概率分布。
37、可选地,所述条件概率分布为包括第一向量和第二向量的二维向量;
38、根据所有所述条件概率分布生成所述目标代码的目标注释,包括:
39、获取所述第一隐藏状态通过池化层输出的第一概率分布;
40、获取所述第二隐藏状态通过池化层输出的第二概率分布;
41、根据所述第一向量和所述第一概率分布确定第一概率,根据所述第二向量和所述第二概率分布确定第二概率;
42、根据所述第一概率和所述第二概率确定下一个注释单词;
43、根据所有所述注释单词得到所述目标代码的目标注释。
44、第二方面,本技术提供了一种代码注释生成装置,所述装置包括:
45、转换模块,用于将待注释的目标代码转换成第一抽象语法树;
46、第一确定模块,用于从预设的训练模型中确定与所述第一抽象语法树相似的目标抽象语法树;
47、第二确定模块,用于基于所述训练模型确定所述目标抽象语法树对应的目标相似代码;
48、隐藏状态确定模块,用于将所述目标代码和所述目标相似代码输入所述训练模型,分别得到每个时间步对应的目标代码的第一隐藏状态和所述目标相似代码的第二隐藏状态;
49、概率分布确定模块,用于根据相同时间步对应的所述第一隐藏状态和所述第二隐藏状态确定所述相同时间步的下一时间步的注释的条件概率分布;
50、生成模块,用于根据所有所述条件概率分布生成所述目标代码的目标注释。
51、第三方面,本技术提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
52、存储器,用于存放计算机程序;
53、处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的代码注释生成方法的步骤。
54、第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的代码注释生成方法的步骤。
55、本技术的有益效果:
56、本技术实施例提供的该方法,将待注释的目标代码转换成第一抽象语法树;从预设的训练模型中确定与所述第一抽象语法树相似的目标抽象语法树;基于所述训练模型确定所述目标抽象语法树对应的目标相似代码;将所述目标代码和所述目标相似代码输入所述训练模型,分别得到每个时间步对应的目标代码的第一隐藏状态和所述目标相似代码的第二隐藏状态;根据相同时间步对应的所述第一隐藏状态和所述第二隐藏状态确定所述相同时间步的下一时间步的注释的条件概率分布;根据所有所述条件概率分布生成所述目标代码的目标注释。该方法,将待注释的目标代码转换成第一抽象语法树,并从预设的训练模型中确定与第一抽象语法树相似的目标抽象语法树,再确定目标抽象语法树对应的目标相似代码,从而基于训练模型得到每个时间步对应的目标代码的第一隐藏状态和目标相似代码的第二隐藏状态,进而根据第一隐藏状态和第二隐藏状态确定相同时间步的下一时间步的注释的条件概率分布,也就是说,可以根据条件概率分布准确预测下一时间步最接近的注释单词,最终自动准确的生成与目标代码匹配的目标注释。
本文地址:https://www.jishuxx.com/zhuanli/20240730/194605.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。