[发明专利]一种基于GAT图神经网络模型的代码克隆检测方法在审
| 申请号: | 202111291169.3 | 申请日: | 2021-11-02 |
| 公开(公告)号: | CN113961241A | 公开(公告)日: | 2022-01-21 |
| 发明(设计)人: | 葛季栋;李传艺;惠天宇;唐泽 | 申请(专利权)人: | 南京大学 |
| 主分类号: | G06F8/75 | 分类号: | G06F8/75;G06K9/62;G06N3/04;G06N3/08 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 210023 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 gat 神经网络 模型 代码 克隆 检测 方法 | ||
本发明公开了一种基于GAT图神经网络模型的代码克隆检测方法,包括以下步骤:根据克隆代码的定义,从编程竞赛网站和现有代码克隆数据集提取生成相应定义的克隆代码数据;解析代码文本生成AST抽象语法树;在AST抽象语法树的基础上增加人工定义的附加边生成表示图;将代码表示图输入GAT网络模型训练获得图表征向量;拼接克隆代码对的表征向量输入二分类网络;判别输出代码克隆预测结果。本发明解决了代码克隆检测领域对代码语义型克隆检测能力不足的问题,通过将代码文本转换为图结构表示,从语义与结构层面表征了克隆代码信息,能准确获得学习克隆代码的内在联系并进行克隆代码判别预测,提高了代码克隆检测的准确性。
技术领域
本发明涉及一种代码克隆检测方法,具体涉及一种基于GAT图神经网络模型的代码克隆检测方法,属于人工智能的自然语言处理和图神经网络技术领域。
背景技术
代码克隆问题在软件开发过程中非常常见,对代码克隆进行检测的方法也是软件工程领域一个非常经典的问题。通常来说,代码克隆有两种成因,第一个原因是开发人员通过一些网上的问答网站搜索相关代码,如StackOverflow等,进而对他人编写的代码直接进行复制粘贴导致的;第二个原因是一些设计良好的代码片段被直接进行了复用。因此可以看到,代码克隆的影响是双向的,既有好的一面,也有坏的一面。好的影响是优秀的代码组件得到了良好的复用,从而避免了重复实现相同功能的不必要工作;坏处是它可能导致原本就具有内部缺陷的代码片段被广泛传播,并且引发其他一系列问题,如不一致更改等。
为了更好的研究代码克隆问题,已有的主流研究工作将代码克隆根据其相似性分为了四类。Type-1的代码克隆是指除去注释和空白字符以外完全相同的代码片段,也被称为Identical clone。Type-2的代码克隆指的是只在标识符的名字和类型上有改变的copy-paste代码,有时被称为Renamed clone。Type-3的代码克隆是在Type-1和Type-2的基础上对代码结构进行了更大更改的克隆,即在语句层级上进行了更改,被称为Gapped clone。Type-4的克隆与前三种完全不同,它代表了使用不同代码结构却实现了相同功能的代码片段,这种克隆被称为语义克隆。一个非常典型的语义克隆例子就是对于排序算法的不同实现,如冒泡排序和快速排序。在实际软件中最常出现的是Type-4的克隆。
为了检测现有软件中的代码克隆,已有的研究文献已经提出了很多方法。一般来说,一个典型的代码克隆检测方法通常包含预处理,代码表示和相似度评估三个步骤,现有的方法均是在后两个步骤上使用了不同的方法和技术进行改进得到的。根据各自方法的特点,我们可以得到几种常见的代码克隆检测方法分类。Text-based方法将代码视为纯文本,进而通过字符串特征来比较代码对。这类方法是早期使用的克隆检测方法,它通常只能检测出Type-1的克隆。Token-based方法将代码文本切割成token序列,进而通过不同的技术方法比较代码对的token序列来检测克隆。Tree-based方法首先将代码片段转换为树状结构,如解析树或抽象语法树(AST),然后使用树匹配算法来检测克隆。Graph-based方法将代码解析为图的形式,如程序依赖图(PDG)和控制流图(CFG)等,然后使用图匹配算法比较代码对的图表示形式,判断其是否为克隆。Metric-based方法根据不同的视角从代码块中提取metric集合,然后根据metric值的相似程度来检测代码克隆。随着近年来深度学习的兴起,也出现了一些基于深度学习的方法,他们有的使用神经网络来获取代码片段的表征,有的将深度学习应用于相似度检测上。
然而,现有的方法虽然能够在检测Type-1、Type-2和Type-3这类句法克隆上具有很好的效果,但对于Type-4这种语义克隆检测却常常效果不佳。这通常是由于现有方法对于代码片段的表征没有同时充分利用代码具有的结构和语义信息。此外,一些方法虽然能够检测语义克隆,但不能同时在句法克隆和语义克隆上达到比较好的效果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111291169.3/2.html,转载请声明来源钻瓜专利网。





