[发明专利]基于多视图程序特征的代码自动生成方法及系统在审
申请号: | 202110070970.9 | 申请日: | 2021-01-19 |
公开(公告)号: | CN112764738A | 公开(公告)日: | 2021-05-07 |
发明(设计)人: | 吕晨;庄云亮;王潇;吴琼;吕蕾;高学剑;刘弘 | 申请(专利权)人: | 山东师范大学 |
主分类号: | G06F8/34 | 分类号: | G06F8/34;G06F8/33;G06F8/41 |
代理公司: | 济南圣达知识产权代理有限公司 37221 | 代理人: | 张庆骞 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 视图 程序 特征 代码 自动 生成 方法 系统 | ||
本发明属于数据处理领域,提供了一种基于多视图程序特征的代码自动生成方法及系统。其中,该方法包括解析代码段的语法结构,生成语法树AST,并对AST节点进行嵌入向量表示,得到AST嵌入向量;解析代码段的语义信息,生成控制流程图CFG,并对CFG进行嵌入向量表示,得到CFG嵌入向量;解析代码段的方法及参数调用信息,生成API依赖图ADG,并对ADG节点进行嵌入向量表示,得到ADG的嵌入向量;将AST嵌入向量、CFG嵌入向量与ADG的嵌入向量做连接,得到最后的融合向量;将融合向量和编码器的词嵌入向量输入至解码器中,输出相应的目标代码。
技术领域
本发明属于数据处理领域,尤其涉及一种基于多视图程序特征的代码自动生成方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
现有的代码生成技术中,往往会考虑源代码的浅层特性(比如:方法名、字符等),而忽略了源代码的抽象语法树(Abstract Syntax Tree,AST)和控制流图(Control FlowGraph,CFG)等结构化特性。尽管有的方法考虑了源代码的结构特性,对抽象语法树进行建模,但是,抽象语法树在高效表示代码结构信息同时也具有不足之处,难以捕捉代码所含方法对于整个类库的调用关系,不能使模型准确地对全局程序进行表达。基于深度学习的学习方法在源代码表示方面有很大的贡献,但是发明人发现,该方法对检索结果难以解释,缺乏可解释性,无法区分对最终结果影响最大的部分。
发明内容
为了解决上述背景技术中存在的至少一项技术问题,本发明提供一种基于多视图程序特征的代码自动生成方法及系统,其通过代码片段转换为对应的向量序列,同时考虑其结构与非结构特性,利用深度学习技术训练模型,通过注意力机制来解释各部分的贡献,来达到给定的自然语言生成代码的目的,从而提高软件的开发效率,减轻了软件开发人员的负担。。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种基于多视图程序特征的代码自动生成方法。
一种基于多视图程序特征的代码自动生成方法,包括:
解析代码段的语法结构,生成语法树AST,并对AST节点进行嵌入向量表示,得到AST嵌入向量;
解析代码段的语义信息,生成控制流程图CFG,并对CFG进行嵌入向量表示,得到CFG嵌入向量;
解析代码段的方法及参数调用信息,生成API依赖图ADG,并对ADG节点进行嵌入向量表示,得到ADG的嵌入向量;
将AST嵌入向量、CFG嵌入向量与ADG的嵌入向量做连接,得到最后的融合向量;
将融合向量和编码器的词嵌入向量输入至解码器中,输出相应的目标代码。
本发明的第二个方面提供一种基于多视图程序特征的代码自动生成系统。
一种基于多视图程序特征的代码自动生成系统,包括:
AST嵌入向量生成模块,其用于解析代码段的语法结构,生成语法树AST,并对AST节点进行嵌入向量表示,得到AST嵌入向量;
CFG嵌入向量生成模块,其用于解析代码段的语义信息,生成控制流程图CFG,并对CFG进行嵌入向量表示,得到CFG嵌入向量;
ADG的嵌入向量生成模块,其用于解析代码段的方法及参数调用信息,生成API依赖图ADG,并对ADG节点进行嵌入向量表示,得到ADG的嵌入向量;
融合向量生成模块,其用于将AST嵌入向量、CFG嵌入向量与ADG的嵌入向量做连接,得到最后的融合向量;
目标代码生成模块,其用于将融合向量和编码器的词嵌入向量输入至解码器中,输出相应的目标代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东师范大学,未经山东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110070970.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于冻干机的自动进出料装置
- 下一篇:一种武术推手功力训练器