CN116302088A - 一种代码克隆检测方法、存储介质及设备 - Google Patents
一种代码克隆检测方法、存储介质及设备 Download PDFInfo
- Publication number
- CN116302088A CN116302088A CN202310012780.0A CN202310012780A CN116302088A CN 116302088 A CN116302088 A CN 116302088A CN 202310012780 A CN202310012780 A CN 202310012780A CN 116302088 A CN116302088 A CN 116302088A
- Authority
- CN
- China
- Prior art keywords
- node
- ast
- cfg
- code
- feature vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 64
- 239000013598 vector Substances 0.000 claims description 90
- 230000006870 function Effects 0.000 claims description 51
- 238000011176 pooling Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 17
- 238000012549 training Methods 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000004931 aggregating effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 230000004927 fusion Effects 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 238000013528 artificial neural network Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000009466 transformation Effects 0.000 claims description 3
- 238000010367 cloning Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 108091029480 NONCODE Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及代码克隆检测技术领域,公开了一种代码克隆检测方法、存储介质及设备,通过同时提取M‑AST的语法信息和M‑CFG的语义信息用作代码克隆检测,可以检测到只用AST所检测不到的代码结构,并且通过将语法特征向量和语义特征向量融合生成特征向量的检测方式,提高对代码克隆检测的通用性,克隆检测成功率高。
Description
技术领域
本发明涉及代码克隆检测技术领域,特别是涉及一种代码克隆检测方法、存储介质及设备。
背景技术
在软件开发中,复制或修改现有的代码片段并将它们粘贴到代码的其他部分中是一种常见的行为,称为代码克隆(code clone)。代码克隆能够加速软件开发效率,但当原始代码存在缺陷时,克隆的代码通常也存在相同缺陷,会使得缺陷在软件系统中散播开来,增加软件维护成本。现有研究表明,20%–50%的大型软件系统中都包含代码克隆。因此,如何对软件系统中存在的代码克隆现象进行有效检测,成为了软件工程领域的一个重要问题,并且随着软件应用广泛应用于社会的各个生产生活领域,这个问题的重要性日趋明显。
现有研究将代码克隆根据克隆程度大致分为4类:类型1的代码克隆是指两段代码除了在空格、布局和注释方面不同外,其他部分完全相同;类型2的代码克隆是指两段代码除了变量、类型、文字和函数的名称有所不同外,其余代码片段相同;类型3的代码克隆是指在类型2的基础上,对部分语句做添加、删除、修改等操作,但仍然保持代码功能相同;类型4的代码克隆是指两段代码实现了相同功能,但是实现的方式却不同。
目前,代码克隆检测方法主要分为以下5类:基于文本的检测方法、基于词法的检测方法、基于语法的检测方法、基于语义的检测方法和基于度量值的检测方法。类型1、类型2、类型3的代码克隆可以被许多现有方法很好的检测到,但这些方法对类型4的克隆检测上往往效果不佳,此外,基于语义的检测方法虽然可以检测到类型4的克隆,但对其它类型的克隆检测不能达到同样好的效果。这是由于现有方法往往只使用单一的语法或语义信息,没有同时充分利用代码的语法信息和语义信息。
现有技术公开了一种基于GAT图神经网络模型的代码克隆检测方法,包括以下步骤:根据克隆代码的定义,从编程竞赛网站和现有代码克隆数据集提取生成相应定义的克隆代码数据;解析代码文本生成AST抽象语法树;在AST抽象语法树的基础上增加人工定义的附加边生成表示图;将代码表示图输入GAT网络模型训练获得图表征向量;拼接克隆代码对的表征向量输入二分类网络;判别输出代码克隆预测结果,该现有技术只使用基于AST语法特征信息的克隆检测方法,对于某些实现相同功能的不同代码片段,其AST结构可能并不相同,对其提取的结构信息差异较大,存在通用性不高的问题,容易导致克隆检测失效。
发明内容
本发明的目的是:提供一种代码克隆检测方法、存储介质及设备,以解决现有技术存在的只使用单一的语法或语义信息,通用性不强,容易导致克隆检测失效的问题。
为了实现上述目的,本发明提供了一种代码克隆检测方法,包括:
S1、构建代码数据集,所述代码数据集由源代码对及克隆标签组成;
S2、从代码数据集中获取数据,对数据中的源代码对进行解析并且生成每个源代码的AST和CFG,访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列中,则标记该节点为Method_call节点,将Method_call节点的父母节点指向被调用函数的AST的根节点,生成M-AST,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点,生成M-CFG;
S3、从M-AST和M-CFG的节点信息中生成语法特征向量和语义特征向量,然后将语法特征向量和语义特征向量融合生成特征向量h;
S4、源代码对融合生成两个特征向量分别为h1和h2,然后通过二分类神经网络完成分类预测;
S5、通过步骤S2-S4构建代码克隆检测模型,将步骤S1中的代码克隆数据集分为训练集和测试集,通过训练集和测试集不断更新代码克隆检测模型的参数权重,直到迭代结束,得到训练好的代码克隆检测模型;
S6、将待检测的代码输入训练好的代码克隆检测模型,获得检测结果。
优选的,在步骤S2中,生成M-AST和M-CFG的过程如下:
S2-1、对源代码进行解析,生成每个函数的AST和CFG;
S2-2、解析源代码,得到每个函数的调用图,根据调用图,构造函数的调用关系序列Q1;
S2-3、访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列Q1中,则标记该节点为Method_call节点;
S2-4、将Method_call节点的父母节点指向被调用函数的AST的根节点生成M-AST,所述M-AST为模块级抽象语法树,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点生成M-CFG,所述M-CFG为模块级控制流程图。
优选的,在步骤S3中获得特征向量h的过程如下:
S3-1、对获取到的M-AST进行先序遍历,得到M-AST的节点信息序列Q2,然后将所有的节点信息序列Q2输入到词向量方法中进行训练,得到词向量模型;
S3-2、将M-AST和M-CFG的每个节点信息通过词向量模型转化为16维的向量,然后将转化为16维向量后的M-AST和M-CFG转化为图数据结构;
S3-3、使用由多个图注意力层堆叠组成的GAT来提取转化为图数据结构后的M-AST的语法特征,更新M-AST的节点信息;然后通过由平均池化和最大值池化组成的混合池化层来聚合M-AST的所有节点信息,以获得M-AST的语法特征向量hg1;
S3-4、使用由多个图卷积层堆叠组成的GCN来提取转化为图数据结构后的M-CFG的语义特征,更新M-CFG的节点信息,然后通过平均池化层来聚合M-CFG的所有节点信息,以获得M-CFG的语义特征向量hg2;
S3-5、采用自适应特征融合策略,调节语法特征向量hg1和语义特征向量hg2的权重,进行融合从而得到特征向量h。
优选的,在步骤S3-1中所述的词向量方法为gensim.models.Word2Vec。
优选的,在步骤S3-3中,所述GAT的计算步骤如下:
输入一个节点个数为n的图,其初始化节点特征集合X={x1,x2,…,xn},每层图注意力层的计算公式为:
其中参数W是用于完成每个节点的特征维度变换的可训练参数,参数a是可训练的参数向量,||表示串联操作,对向量进行拼接,eij表示邻居节点j到节点i的注意力系数,aij表示计算得到的节点i和j之间的权重,σ表示非线性激活函数,x′i表示将节点xi更新后得到的节点特征。
优选的,在步骤S3-3中,所述语法特征向量hg1计算公式如下:
hg1=Max(Hg)+Mean(Hg)
参数Hg表示为M-AST上所有节点特征向量的特征矩阵,Max表示最大池化函数,Mean表示平均池化函数。
优选的,在步骤S3-4中,所述语义特征向量hg2计算公式如下:
hg2=Mean(Hg)
参数Hg为表示M-CFG上所有节点特征向量的特征矩阵,Mean表示平均池化函数。
优选的,在步骤S3-5中,所述特征向量h计算公式如下:
h=ahg1+(1-a)hg2
其中a是可学习的权重参数。
本申请还提出一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述任意一项所述的一种代码克隆检测方法。
本申请还提出一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述任意一项所述的一种代码克隆检测方法。
与现有技术相比,其有益效果在于:
本发明通过同时提取M-AST的语法信息和M-CFG的语义信息用作代码克隆检测,可以检测到只用AST所检测不到的代码结构,并且通过将语法特征向量和语义特征向量融合生成特征向量的检测方式,提高对代码克隆检测的通用性,克隆检测成功率高。
附图说明
图1是本发明实施例的代码克隆检测方法的流程图;
图2是本发明实施例的代码克隆检测模型的模型结构图;
图3是本发明实施例的代码克隆检测方法中生成M-AST和M-CFG的流程图;
图4是本发明实施例的代码克隆检测方法中获得特征向量h的流程图;
图5是本发明实施例的代码克隆检测方法中Factorial函数和Absolute函数的AST生成M-AST的示例图;
图6是本发明实施例的代码克隆检测方法中Factorial函数和Absolute函数的CFG生成M-CFG的示例图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例一
如图1所示,本发明优选实施例的一种代码克隆检测方法,包括:
S1、构建代码数据集,代码数据集由源代码对及克隆标签组成;
本发明中采用的数据集是OJClone,该数据集包含104个编程任务,每个任务有500个源代码。
本发明将实现相同功能的源代码之间视为代码克隆对,实现不同功能的源代码之间视为非代码克隆对,构建克隆对数据集。
S2、从代码数据集中获取数据,对数据中的源代码对进行解析并且生成每个源代码的AST(抽象语法树)和CFG(程序流程图),访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列中,则标记该节点为Method_call节点,将Method_call节点的父母节点指向被调用函数的AST的根节点,生成M-AST,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点,生成M-CFG。
S3、从M-AST和M-CFG的节点信息中生成语法特征向量和语义特征向量,然后将语法特征向量和语义特征向量融合生成特征向量h。
S4、源代码对融合生成两个特征向量分别为h1和h2,然后通过二分类神经网络完成分类预测。
S5、通过步骤S2-S4构建代码克隆检测模型,将步骤S1中的代码克隆数据集分为训练集和测试集,通过训练集和测试集不断更新代码克隆检测模型的参数权重,直到迭代结束,得到训练好的代码克隆检测模型。
本发明中将步骤S1中的代码克隆数据集分为训练集和测试集,初始化代码克隆检测模型中的参数,将训练集和测试集的数据划分为多个批次,每次将一批次的训练集的数据输入到代码克隆检测模型中进行训练,获得训练集输出结果,用训练集输出结果与训练集的克隆标签对比,得到当前批次的损失值,然后根据损失值更新代码克隆检测模型的各层参数,用一批次的测试集去测试更新后的代码克隆检测模型,获得测试集输出结果,用测试集输出结果与测试集的克隆标签进行对比,验证克隆检测的准确性,最终得到训练好的代码克隆检测模型。
如图2所示为代码克隆检测模型结构,解析源代码对,生成函数级别的AST和CFG,将函数级别的AST和CFG合并成为模块级别的M-AST和M-CFG,使用GAT来提取转化为图数据结构后的M-AST的语法特征,通过混合池化层来聚合M-AST的所有节点信息,以获得M-AST的语法特征向量,使用GCN来提取转化为图数据结构后的M-CFG的语法特征,更新M-CFG的节点信息,然后通过平均池化层来聚合M-CFG的所有节点信息,以获得M-CFG的语义特征向量,并将语法及语义特征向量进行融合,得到源代码对特征向量,然后将源代码对特征向量输入到克隆分类器中,判断该源代码对是否为克隆。
S6、将待检测的代码输入训练好的代码克隆检测模型,获得检测结果。
优选的,在步骤S2中,生成M-AST和M-CFG的过程如下:
S2-1、对源代码进行解析,生成每个函数的AST和CFG。
S2-2、解析源代码,得到每个函数的调用图,根据调用图,构造函数的调用关系序列Q1。
S2-3、访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列Q1中,则标记该节点为Method_call节点。
S2-4、将Method_call节点的父母节点指向被调用函数的AST的根节点生成M-AST,M-AST为模块级抽象语法树,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点生成M-CFG,M-CFG为模块级控制流程图。
在步骤S3中获得特征向量h的过程如下:
S3-1、对获取到的M-AST进行先序遍历,得到M-AST的节点信息序列Q2,然后将所有的节点信息序列Q2输入到词向量方法中进行训练,得到词向量模型。
S3-2、将M-AST和M-CFG的每个节点信息通过词向量模型转化为16维的向量,然后将转化为16维向量后的M-AST和M-CFG转化为图数据结构。
本发明中所述转化为图数据结构是指将M-AST和M-CFG的边和点的信息转化为图神经网络模型所适用的格式。
S3-3、使用由多个图注意力层堆叠组成的GAT来提取转化为图数据结构后的M-AST的语法特征,更新M-AST的节点信息,然后通过由平均池化和最大值池化组成的混合池化层来聚合M-AST的所有节点信息,以来获得M-AST的语法特征向量hg1;
S3-4、使用由多个图卷积层堆叠组成的GCN来提取转化为图数据结构后的M-CFG的语法特征,更新M-CFG的节点信息,然后通过平均池化层来聚合M-CFG的所有节点信息,以获得M-CFG的语义特征向量hg2;
S3-5、采用自适应特征融合策略,调节语法特征向量hg1和语义特征向量hg2的权重,进行融合从而得到特征向量h。
在步骤S3-1中的词向量方法为gensim.models.Word2Vec;
gensim是一个基于Python的深度学习框架,gensim.models.Word2Vec是gensim中的一种方法,用于将文本单词转化为指定维度的特征向量。
在步骤S3-3中,GAT的计算步骤如下:
输入一个节点个数为n的图,其初始化节点特征集合X={x1,x2,…,xn},每层图注意力层的计算公式为:
其中参数W是用于完成每个节点的特征维度变换的可训练参数,参数a是可训练的参数向量,||表示串联操作,对向量进行拼接,eij表示邻居节点j到节点i的注意力系数,aij表示计算得到的节点i和j之间的权重,σ表示非线性激活函数,x′i表示将节点xi更新后得到的节点特征。
对图的每一个节点进行更新得到的节点特征,以此作为下一个图注意力层的输入,完成所有图注意力层的计算后,输出图中各节点的特征向量。
在步骤S3-3中,语法特征向量hg1计算公式如下:
hg1=Max(Hg)+Mean(Hg)
参数Hg表示为M-AST上所有节点特征向量的特征矩阵,Max表示最大池化函数,Mean表示平均池化函数。
在步骤S3-4中,语义特征向量hg2计算公式如下:
hg2=Mean(Hg)
参数Hg为表示M-CFG上所有节点特征向量的特征矩阵,Mean表示平均池化函数。
在步骤S3-5中,特征向量h计算公式如下:
h=ahg1+(1-a)hg2
其中a是可学习的权重参数。
实施例二
本申请还提出一种计算机存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项的一种代码克隆检测方法。
实施例三
本申请还提出一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项的一种代码克隆检测方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (10)
1.一种代码克隆检测方法,其特征在于,包括:
S1、构建代码数据集,所述代码数据集由源代码对及克隆标签组成;
S2、从代码数据集中获取数据,对数据中的源代码对进行解析并且生成每个源代码的AST和CFG,访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列中,则标记该节点为Method_call节点,将Method_call节点的父母节点指向被调用函数的AST的根节点,生成M-AST,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点,生成M-CFG;
S3、从M-AST和M-CFG的节点信息中生成语法特征向量和语义特征向量,然后将语法特征向量和语义特征向量融合生成特征向量h;
S4、源代码对融合生成两个特征向量分别为h1和h2,然后通过二分类神经网络完成分类预测;
S5、通过步骤S2-S4构建代码克隆检测模型,将步骤S1中的代码克隆数据集分为训练集和测试集,通过训练集和测试集不断更新代码克隆检测模型的参数权重,直到迭代结束,得到训练好的代码克隆检测模型;
S6、将待检测的代码输入训练好的代码克隆检测模型,获得检测结果。
2.根据权利要求1所述的一种代码克隆检测方法,其特征在于,在步骤S2中,生成M-AST和M-CFG的过程如下:
S2-1、对源代码进行解析,生成每个函数的AST和CFG;
S2-2、解析源代码,得到每个函数的调用图,根据调用图,构造函数的调用关系序列Q1;
S2-3、访问AST和CFG中的所有节点,若当前访问的节点中,其节点属性中的源代码信息和行号信息在序列Q1中,则标记该节点为Method_call节点;
S2-4、将Method_call节点的父母节点指向被调用函数的AST的根节点生成M-AST,所述M-AST为模块级抽象语法树,将Method_call节点的上一个节点指向被调用函数的CFG的入口节点,然后将被调用函数的CFG的出口节点指向Method_call节点所指向的下一个节点生成M-CFG,所述M-CFG为模块级控制流程图。
3.根据权利要求1所述的一种代码克隆检测方法,其特征在于,在步骤S3中获得特征向量h的过程如下:
S3-1、对获取到的M-AST进行先序遍历,得到M-AST的节点信息序列Q2,然后将所有的节点信息序列Q2输入到词向量方法中进行训练,得到词向量模型;
S3-2、将M-AST和M-CFG的每个节点信息通过词向量模型转化为16维的向量,然后将转化为16维向量后的M-AST和M-CFG转化为图数据结构;
S3-3、使用由多个图注意力层堆叠组成的GAT来提取转化为图数据结构后的M-AST的语法特征,更新M-AST的节点信息;然后通过一个由平均池化和最大值池化组成的混合池化层来聚合M-AST的所有节点信息,以获得M-AST的语法特征向量hg1;
S3-4、使用由多个图卷积层堆叠组成的GCN来提取转化为图数据结构后的M-CFG的语义特征,更新M-CFG的节点信息,然后通过平均池化层来聚合M-CFG的所有节点信息,以获得M-CFG的语义特征向量hg2;
S3-5、采用自适应特征融合策略,调节语法特征向量hg1和语义特征向量hg2的权重,进行融合从而得到特征向量h。
4.根据权利要求3所述的一种代码克隆检测方法,其特征在于,在步骤S3-1中所述的词向量方法为gensim.models.Word2Vec。
6.根据权利要求3所述的一种代码克隆检测方法,其特征在于,在步骤S3-3中,所述语法特征向量hg1计算公式如下:
hg1=Max(Hg)+Mean(Hg)
参数Hg表示为M-AST上所有节点特征向量的特征矩阵,Max表示最大池化函数,Mean表示平均池化函数。
7.根据权利要求4所述的一种代码克隆检测方法,其特征在于,在步骤S3-4中,所述语义特征向量hg2计算公式如下:
hg2=Mean(Hg)
参数Hg为表示M-CFG上所有节点特征向量的特征矩阵,Mean表示平均池化函数。
8.根据权利要求4所述的一种代码克隆检测方法,其特征在于,在步骤S3-5中,所述特征向量h计算公式如下:
h=ahg1+(1-a)hg2
其中a是可学习的权重参数。
9.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1~8任意一项所述的一种代码克隆检测方法。
10.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1~9任意一项所述的一种代码克隆检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310012780.0A CN116302088B (zh) | 2023-01-05 | 2023-01-05 | 一种代码克隆检测方法、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310012780.0A CN116302088B (zh) | 2023-01-05 | 2023-01-05 | 一种代码克隆检测方法、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116302088A true CN116302088A (zh) | 2023-06-23 |
CN116302088B CN116302088B (zh) | 2023-09-08 |
Family
ID=86826446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310012780.0A Active CN116302088B (zh) | 2023-01-05 | 2023-01-05 | 一种代码克隆检测方法、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302088B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609005A (zh) * | 2023-10-19 | 2024-02-27 | 广东工业大学 | 一种代码相似度检测方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781086A (zh) * | 2019-10-23 | 2020-02-11 | 南京大学 | 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法 |
CN112764738A (zh) * | 2021-01-19 | 2021-05-07 | 山东师范大学 | 基于多视图程序特征的代码自动生成方法及系统 |
CN113434418A (zh) * | 2021-06-29 | 2021-09-24 | 扬州大学 | 知识驱动的软件缺陷检测与分析方法及系统 |
CN113961241A (zh) * | 2021-11-02 | 2022-01-21 | 南京大学 | 一种基于gat图神经网络模型的代码克隆检测方法 |
US20220261241A1 (en) * | 2021-02-17 | 2022-08-18 | Open Weaver Inc. | Methods and systems for automated software natural language documentation |
CN115146279A (zh) * | 2022-06-28 | 2022-10-04 | 湖南大学 | 程序漏洞检测方法、终端设备及存储介质 |
-
2023
- 2023-01-05 CN CN202310012780.0A patent/CN116302088B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781086A (zh) * | 2019-10-23 | 2020-02-11 | 南京大学 | 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法 |
CN112764738A (zh) * | 2021-01-19 | 2021-05-07 | 山东师范大学 | 基于多视图程序特征的代码自动生成方法及系统 |
US20220261241A1 (en) * | 2021-02-17 | 2022-08-18 | Open Weaver Inc. | Methods and systems for automated software natural language documentation |
CN113434418A (zh) * | 2021-06-29 | 2021-09-24 | 扬州大学 | 知识驱动的软件缺陷检测与分析方法及系统 |
CN113961241A (zh) * | 2021-11-02 | 2022-01-21 | 南京大学 | 一种基于gat图神经网络模型的代码克隆检测方法 |
CN115146279A (zh) * | 2022-06-28 | 2022-10-04 | 湖南大学 | 程序漏洞检测方法、终端设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘复星等: "基于深度学习的代码克隆检测技术研究", 电脑知识与技术, vol. 14, no. 18 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117609005A (zh) * | 2023-10-19 | 2024-02-27 | 广东工业大学 | 一种代码相似度检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116302088B (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109816032B (zh) | 基于生成式对抗网络的无偏映射零样本分类方法和装置 | |
US11907675B2 (en) | Generating training datasets for training neural networks | |
CN111737535B (zh) | 一种基于元结构和图神经网络的网络表征学习方法 | |
Sethi et al. | DLPaper2Code: Auto-generation of code from deep learning research papers | |
EP3846034A1 (en) | Systems and methods for automated testing using artificial intelligence techniques | |
CN112699215B (zh) | 基于胶囊网络与交互注意力机制的评级预测方法及系统 | |
CN116302088B (zh) | 一种代码克隆检测方法、存储介质及设备 | |
CN113010683A (zh) | 基于改进图注意力网络的实体关系识别方法及系统 | |
CN112529071A (zh) | 一种文本分类方法、系统、计算机设备和存储介质 | |
CN112015890B (zh) | 电影剧本摘要的生成方法和装置 | |
CN114546365A (zh) | 一种流程可视化的建模方法、服务器、计算机系统及介质 | |
CN112465929B (zh) | 一种基于改进图卷积网络的图像生成方法 | |
CN111159424B (zh) | 标注知识图谱实体的方法,装置,存储介质及电子设备 | |
CN115906863B (zh) | 基于对比学习的情感分析方法、装置、设备以及存储介质 | |
CN116502380A (zh) | 基于可解释图神经网络的电网暂态失稳定位方法和系统 | |
EP4064038B1 (en) | Automated generation and integration of an optimized regular expression | |
CN113065321B (zh) | 基于lstm模型和超图的用户行为预测方法及系统 | |
CN113010687A (zh) | 一种习题标签预测方法、装置、存储介质以及计算机设备 | |
CN112307227B (zh) | 一种数据分类方法 | |
CN117151247B (zh) | 机器学习任务建模的方法、装置、计算机设备和存储介质 | |
CN111027318A (zh) | 基于大数据的行业分类方法、装置、设备及存储介质 | |
CN115270802B (zh) | 一种问题语句的处理方法、电子设备及存储介质 | |
CN110457543B (zh) | 一种基于端到端多视角匹配的实体消解方法和系统 | |
US20230274478A1 (en) | Neural image compositing with layout transformers | |
US20230367303A1 (en) | Automated intelligence facilitation of routing operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |