(19)中华 人民共和国 国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202111682428.5
(22)申请日 2021.12.3 0
(71)申请人 中山大学
地址 510275 广东省广州市新港西路13 5号
(72)发明人 何坤宁 陈湘萍 黄袁 周晓聪
郑子彬
(74)专利代理 机构 北京集佳知识产权代理有限
公司 11227
代理人 彭祯奇
(51)Int.Cl.
G06F 8/73(2018.01)
G06F 40/169(2020.01)
G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
一种代码注释生成方法及装置
(57)摘要
本申请公开一种代码注释生成方法及 装置,
本申请通过 获取第一项目的源代码, 将源代码编
译成字节码, 根据字节码生成控制流程图, 将字
节码及控制流程图输入注释翻译模 型, 得到注释
翻译模型输出的源代码的注释 。 本申请方案通过
将第二项目的源代码转化成字节码和控制流程
图, 并通过第二项目的字节码和控制流程图训练
注释翻译模 型, 得到注释翻译模 型输出的第二项
目的源代码的注释, 相比于现有技术, 由于第二
项目和第一项目的源代码的字节码具有相似性,
可以利用第二项目的训练数据训练注释翻译模
型, 得到的注释翻译模型可以供具有相似字节码
的第一项目使用, 降低了注释翻译模 型的学习成
本。
权利要求书2页 说明书9页 附图2页
CN 114296792 A
2022.04.08
CN 114296792 A
1.一种代码注释生成方法, 其特 征在于, 包括:
获取第一项目的源代码;
将所述源代码编译成字节码;
根据所述字节码生成控制流 程图;
将所述字节码及所述控制流程图输入注释翻译模型, 得到所述注释翻译模型输出的所
述源代码的注释;
所述注释翻译模型, 以第 二项目的字节码及所述第 二项目的字节码的控制流程图作为
训练样本, 以第二项目的源代码的注释为训练标签训练得到 。
2.根据权利要求1所述的方法, 其特征在于, 所述注释翻译模型包括位置编码层、 编码
器、 解码器、 全连接层和GRU编码层;
所述注释翻译模型的训练过程, 包括:
通过位置编码层, 对获取的所述样本字节码及所述样本控制流程图进行位置编码, 得
到语言序列;
通过编码器, 对所述样本 字节码进行处 理得到编码特 征;
通过解码器, 根据所述语言序列生成与所述编码特 征对应的解码结果;
通过GRU编码层, 对所述样本控制流 程图进行处 理得到特 征向量;
通过全连接层, 根据所述 解码结果和所述特 征向量, 生成所述注释;
利用损失函数对生成的所述注释, 与所述样本字节码及样本控制流程图对应的注释标
签的差值进行计算, 得到翻译损失值;
根据所述翻译损失值, 更新注释翻译模型的参数。
3.根据权利要求2所述的方法, 其特征在于, 所述根据所述解码结果和所述特征向量,
生成所述注释, 包括:
基于预设词汇 表, 利用如下公式预测生成所述注释中的各个单词:
P({yi|y1,..,yi‑1},xc,xv)=softmax(W*Concat(Transformer{y1,..,yi‑1},xc),GRU
(xv))+b)
其中, P表示预测下一个单词是yi的概率, yi代表生成解码结果中的第i个单词, {y1,..,
yi‑1}表示解码结果, xc表示字节码, xv表示控制流图, W表示全连接层的权重矩阵, b表示全连
接层的偏置矩阵, G RU(xv)表示控制流程图的特征向量, softmax作为激活函数, Pi'表示加入
了标签平 滑参数的P, K表示预设词汇 表中的单词总数,
为预设参数。
4.根据权利要求3所述的方法, 其特 征在于, 所述损失函数, 包括:
其中, L表示损失函数。
5.根据权利要求1所述的方法, 其特征在于, 所述根据所述字节码生成控制流程图, 包
括:
将所述字节码反编译为 三地址码;
将所述三地址码划分为多个 基本块并按字节码的书 写顺序连接, 生成控制流 程图。权 利 要 求 书 1/2 页
2
CN 114296792 A
26.根据权利要求2所述的方法, 其特征在于, 在所述注释翻译模型的训练过程之前, 还
包括:
对所述样本 字节码和所述注释进行 预处理, 得到新的样本 字节码和新的注释;
将所述新的样本 字节码和控制流 程图作为训练样本, 新的注释作为训练标签。
7.根据权利要求6所述的方法, 其特征在于, 对所述样本字节码和所述注释进行预处
理, 得到新的样本 字节码和新的注释, 包括:
获取本地变量表, 所述本地变量表为保存在本地的记录有用户注释习惯的变量的表;
对所述样本 字节码的字节码Code区进行除杂处 理, 得到除杂后的字节码Code区;
将所述除杂后的字节码Code区与所述本地变量表结合, 得到新的样本 字节码;
将所述注释通过 预设分隔规则, 分割得到多个单词;
将所述单词的形态转换为预设形态, 得到预设形态的单词, 并组成得到新的注释。
8.根据权利要求7所述的方法, 其特征在于, 在将所述单词的形态转换为预设形态, 得
到预设形态的单词, 并组成新的注释之后, 还 包括:
对所述新的样本字节码和新的注释进行去重, 得到去重后的新的样本字节码和新的注
释。
9.一种代码注释生成装置, 其特 征在于, 包括:
源代码获取 单元, 用于获取第一项目的源代码;
字节码编译单 元, 用于将所述源代码编译成字节码;
控制流程图生成单 元, 用于根据所述字节码生成控制流 程图;
模型输出单元, 用于将所述字节码及所述控制流程图输入注释翻译模型, 得到所述注
释翻译模型输出的所述源代码的注释;
所述注释翻译模型, 以第 二项目的字节码及所述第 二项目的字节码的控制流程图作为
训练样本, 以第二项目的源代码的注释为训练标签训练得到 。
10.根据权利要求9所述的方法, 其特 征在于, 所述控制流 程图生成单 元, 包括:
第一控制流 程图生成子单 元, 用于将所述字节码反编译为 三地址码;
第二控制流程图生成子单元, 用于将所述三地址码划分为多个基本块并按字节码的书
写顺序连接, 生成控制流 程图。权 利 要 求 书 2/2 页
3
CN 114296792 A
3
专利 一种代码注释生成方法及装置
文档预览
中文文档
14 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 21:46:41上传分享