[发明专利]一种基于抽象语法树通路上下文的程序代码相似性度量方法在审
申请号: | 202110642424.8 | 申请日: | 2021-06-09 |
公开(公告)号: | CN113434145A | 公开(公告)日: | 2021-09-24 |
发明(设计)人: | 江波;张挺;匡新 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06Q50/20 |
代理公司: | 上海德禾翰通律师事务所 31319 | 代理人: | 夏思秋 |
地址: | 200241 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 通路 上下文 程序代码 相似性 度量 方法 | ||
1.一种基于抽象语法树通路上下文的代码相似性度量方法,其特征在于,所述方法利用程序的底层表示技术-抽象语法树来表征程序,并从抽象语法树中提取终端节点到终端节点的通路,通过编码向量化,获取向量表示,利用余弦相似性对程序进行相似性比较;所述方法包括以下步骤:
步骤一、构建抽象语法树:对程序代码片段进行解析,得到相应的抽象语法树;
步骤二、遍历抽象语法树:对步骤一中获得的抽象语法树进行遍历,提取抽象语法树终端节点之间的通路;
步骤三、通路上下文的编码:对步骤二获得的抽象语法树终端节点之间的通路进行编码,实现向量化;
步骤四、代码片段的相似性度量:将步骤三中编码后的代码向量,用余弦相似性进行代码的相似性比较。
2.如权利要求1所述的方法,其特征在于,所述步骤一具体为:源代码首先经过lib-0.5.jar架包解析生成抽象语法树asts.csv、节点类型node_types.csv和词素tokens.csv这三个文件,在命令行加入-storage dot后,生成关于抽象语法树的dot文件和描述程序代码的文件description.csv,获得所需要的抽象语法树。
3.如权利要求1所述的方法,其特征在于,所述步骤二具体为:从语义上讲,单条抽象语法树路径表示代码的两个具体元素逻辑连接;根据抽象语法树的规模大小,提取抽象语法树中一条或多条通路,当多条通路组合起来,表示整棵树,以此有效地获取代码片段的语义;利用lib-0.5.jar架包,对通路进行长度和宽度的限制,控制抽象语法树通路数量,遍历抽象语法树,得到抽象语法树通路上下文,生成node_types.csv、tokens.csv、paths.csv和path_contexts.csv这四个文件。
4.如权利要求1所述的方法,其特征在于,步骤三中,所述通路的编码方法基于词表形式,所述词表包括词素标识符、节点类型标识符、通路标识符和通路上下文标识符。
5.如权利要求1所述的方法,其特征在于,步骤四中,所述代码片段的相似性度量具体包括如下步骤:
步骤4.1、将抽象语法树的通路上下文三元组分为节点node和路径path两个部分;所述节点是指模型训练期间得到的抽象语法树终端叶节点的值,所述路径是指抽象语法树通路的集合;
将所有的节点和路径都表示成一个相同维度的向量,即其中,node_vec是指模型训练期间得到的抽象语法树终端叶节点;path_vec是指抽象语法树通路的集合;d表示向量的维度;|node|和|path|表示抽象语法树中叶节点和通路的数量;
步骤4.2、一条AST通路pi=(xs,p,xt)的上下文变量ci由两个节点向量和一个通路向量联结而成的d维向量,即:
其中,xs=val(start(pi)),表示与通路pi的起始节点关联的值;xt=val(end(pi)),表示与通路pi的末尾节点关联的值;3d表示node_vec,path_vec和node_vec组成的d维向量;
步骤4.3、对于一个编程任务T,给定一个参考的解决方案的向量v0,与学习者提交的代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量:
6.一种实现如权利要求1-5之任一项所述相似性度量方法的系统,其特征在于,所述系统包括:程序向量获取模型、相似性比较模型。
7.如权利要求6所述的系统,其特征在于,所述程序向量获取模型用于将给定任意数量的通路上下文向量,聚合为单个向量,所述模型需要学习得到通路向量表示;
所述相似性比较模型用于给定一个向量v0,与代码片段的向量vi进行比较,得出二者的余弦值cos_simi作为两个程序片段相似性的衡量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110642424.8/1.html,转载请声明来源钻瓜专利网。