CN114880023B - 面向技术特征的源代码对比方法、***与程序产品 - Google Patents
面向技术特征的源代码对比方法、***与程序产品 Download PDFInfo
- Publication number
- CN114880023B CN114880023B CN202210808406.7A CN202210808406A CN114880023B CN 114880023 B CN114880023 B CN 114880023B CN 202210808406 A CN202210808406 A CN 202210808406A CN 114880023 B CN114880023 B CN 114880023B
- Authority
- CN
- China
- Prior art keywords
- function
- vector
- built
- code
- class
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000006870 function Effects 0.000 claims abstract description 245
- 239000013598 vector Substances 0.000 claims abstract description 159
- 238000013528 artificial neural network Methods 0.000 claims abstract description 12
- 239000011159 matrix material Substances 0.000 claims description 38
- 238000004364 calculation method Methods 0.000 claims description 26
- 238000007781 pre-processing Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 239000011541 reaction mixture Substances 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 3
- 238000002910 structure generation Methods 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 150000001875 compounds Chemical class 0.000 claims description 2
- 238000003058 natural language processing Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 5
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000126 substance Substances 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种面向技术特征的源代码对比方法、***与程序产品,属于自然语言处理的技术领域。本发明包括:使用了基于函数调用结构的语义编码方法,从函数调用结构、函数名称和内置类等方面分析代码相似性;采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。本发明综合考虑了函数名、调用结构和内置类等技术特征信息,能够更好地依据技术特征进行代码对比。
Description
技术领域
本发明公开一种面向技术特征的源代码对比方法、***与程序产品,属于自然语言处理的技术领域。
背景技术
开源平台为科研人员提供了分享和交流代码的环境,越来越多的深度学***台分享,营造了可复用代码的生态环境,因此,针对特定问题,研究人员有必要查找相关解决方案。现代算法设计思想是模块化构建代码,通常包含大量的基础性功能函数,其函数名、调用结构和内置类等信息提供了重要的代码技术特征。针对相同问题的多种解决方案,例如在文本分类中,可以使用不同的神经网络结构:卷积神经网络、循环神经网络、注意力机制等,其性能也有差异,因此,需要进一步分析代码结构和执行效率等性能问题,并将自己新设计的代码与可复用代码进行对比。
代码的相似度是代码对比分析中的重要指标,目前主流的代码相似性计算方法可以分为三类:基于调用结构、基于静态特征、基于二进制代码的代码相似性计算方法。
基于调用结构的代码相似性计算方法主要是依据代码的逻辑结构来计算代码之间的相似度,逻辑结构一般包括抽象语法树和程序调用图等,例如:公开号为CN110737469A的发明专利公开一种功能粒度上基于语义信息的源代码相似度评估方法,通过计算功能对应的标识符和控制流图的嵌入向量,该方法考虑了控制流图的结构和节点信息,但是该方法没有考虑代码导入的内置类等技术特征的语义信息。
基于静态特征的代码相似性计算方法是通过对源代码抽取一些度量值形成特征向量,然后将代码特征向量之间的相似度作为代码的相似度,例如:公开号为CN111290784A的发明专利公开了适用于大规模样本的程序源代码相似度检测方法,对各待检测样本的文本特征序列和特征权重序列计算局部敏感哈希值,将该值作为样本特征向量,这类方法一般适用于大部分程序代码,但是这类方法一般没有考虑代码技术特征的调用信息和结构语义。
基于二进制的代码相似性计算方法,一般是对二进制代码进行反汇编后得到每个函数的指令序列,然后对指令特征进行向量化,最后通过特征向量来计算代码相似度,例如:公开号为CN113554101A的中国专利公开一种基于深度学习的二进制代码相似度检测方法,使用Structure2Vec来生成二进制函数的控制流图的图嵌入,引入CNN来处理控制流图基本块间的顺序结构信息,从而更好的明确函数内部块间的先后关系,该方法能够很好的适应跨架构和跨版本相似度检测工作,但是没有考虑代码的函数名等技术特征的语义信息。
针对上述问题,本发明方法综合考虑技术特征的语义信息,使用了基于函数调用结构的语义编码方法,从函数调用结构、函数名称和内置类等方面分析代码相似性;采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。
发明内容
针对现有技术存在的技术问题,本发明公开一种面向技术特征的源代码对比方法。
本发明还公开实现上述对比方法的***。
本发明还公开一种加载有上述方法的程序产品。
本发明还公开一种加载有上述方法的计算机可读存储介质。
本发明公开一种利用上述方法的应用方法。
发明概述:
本发明所述一种面向技术特征的源代码对比方法,现代算法设计思想是模块化构建代码,通常包含大量的基础性功能函数,其函数名、调用结构和内置类等信息提供了重要的代码技术特征,旨在:综合考虑技术特征的语义信息,从函数调用结构、函数名和内置类等方面分析代码结构和执行效率等性能问题。
术语解释:
1、技术特征:包括描述代码实现功能和使用技术的关键词;函数调用结构;函数名;内置类名称;损失函数等信息。
2、函数调用结构相似性:面向对象的编程具有封装、继承和多态三大特征,大部分代码是基于模块化设计的思想,即以功能为单位进行代码设计,利用函数可以实现代码的模块化,如果代码实现的功能相似,那么代码技术特征中函数调用结构是类似的。
3、函数相似性:具有特定功能的函数通常采用函数,函数具有明确的功能、入口调用参数和返回值,如果代码实现的功能相似,那么代码技术特征中函数命名也类似。
4、内置类相似性:函数一般都封装在内置类中,如果代码实现的功能相似,那么代码技术特征中导入的内置类也类似。
本发明详细的技术方案如下:
一种面向技术特征的源代码对比方法,其特征在于,包括:
代码文件预处理阶段,用于输出代码的函数调用结构、函数名称和内置类名称;
对所述函数调用结构语义编码阶段:采用基于图卷积神经网络的自编码器方法对函数调用结构进行语义编码,得到函数调用结构向量,用于基于语义向量对比代码结构语义;
对所述函数名称和内置类名称的调用信息使用TF-IDF算法编码阶段,分别得到函数向量和内置类向量,用于基于函数名称和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;
最后将函数调用结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,以比对代码相似度。
根据本发明优选的,所述代码文件预处理阶段包括:
使用函数调用结构生成工具得到代码技术特征中函数调用结构的DOT文件,其中,DOT文件用于描述函数调用结构的图表示中节点以及节点之间的关系。例如Pycallgraph工具可以生成Python应用程序的函数调用结构的图表示,使用Graphviz工具可以将DOT文件转化为函数调用结构图片,将DOT文件经过预处理后得到函数调用结构的图表示:
根据本发明优选的,所述函数调用结构语义编码阶段包括:
代码文件经过上述预处理后得到函数调用结构的图表示、函数名称和内置类名称,使用基于图卷积神经网络(Graph Convolutional Neural Networks,GCN)的自编码器方法对函数调用结构的图表示进行语义编码,结构语义向量h s 包含函数属性和存在函数调用边的信息,编码器的计算如公式(II)至(IV)所示:
Relu是激活函数;W 0 和W 1 是待学习的参数,对图自编码器进行训练后得到的;所述图自编码器包括编码器和解码器,所述编码器的计算如公式(II)至(IV)所示;
D是度矩阵,度矩阵是对角阵,对角上的元素为各个顶点的度;
所述图自编码器采用sigmoid函数作为解码器来重构原始的图,所述解码器的计算如公式(V)所示:
根据本发明优选的,为了使结构语义向量中包含丰富的节点和边的信息,使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似,使用重构图的邻接矩阵与原始图的邻接矩阵的交叉熵作为损失函数,损失函数的计算如公式(VI)所示:
根据本发明优选的,所述函数名称和内置类名称的调用信息编码阶段包括:在函数相似性部分,基于函数名称的调用信息向量进行函数相似性对比,算法代码包含大量提供基础性功能的函数,函数具有明确的功能、入口调用参数和返回值,所以功能相似的代码采用的函数也是相似的,根据函数名称的TF-IDF计算模块得到函数调用信息向量,函数向量h f 的计算如公式(VII)所示:
在公式(VII)中,h f 表示函数向量;f(fun i )表示代码中第i个调用的函数的TFIDF值;
在内置类相似性部分,基于内置类名称的调用信息向量进行内置类的相似性对比,函数一般都封装在内置类中,如果代码实现的功能相似,那么代码导入的内置类也是相似的,根据内置类的TF-IDF计算模块得到内置类调用信息向量,内置类向量h c 的计算如公式(VIII)所示:
在公式(VIII)中,h c 表示内置类向量;f(cls i )表示代码中导入的第i个内置类的TFIDF值。
根据本发明优选的,将函数调用结构向量、函数向量和内置类向量拼接作为技术特征向量,技术特征向量h的计算如公式(IX)所示:
在公式(IX)中,h表示技术特征向量,⊕是向量拼接符,由于函数调用结构向量、函数向量和内置类向量的长度均受到代码中调用函数的数量和导入内置类的数量影响,所以将函数调用结构向量、函数向量和内置类向量均线性变换为一定维度的向量;
最后,将技术特征向量的余弦相似度值sim α 作为检索出的可复用代码和新设计代码的相似度,代码相似度的计算如公式(X)所示:
在公式(X)中,sim α 是检索出的可复用代码和新设计代码的相似度值;cos是余弦相似度函数;h sea 是检索出可复用代码的技术特征向量;h des 是新设计代码的技术特征向量。
一种加载有上述方法的***,包括:
代码文件预处理阶段处理模块;函数调用结构语义编码阶段处理模块;函数和内置类名称的调用信息编码阶段处理模块;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量;基于技术特征向量的代码对比功能。
一种加载有上述方法的程序产品,包括:所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行上述的方法。
一种加载有上述方法的计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现本发明记载的任一项所述方法的步骤。
本发明公开一种利用上述方法的应用方法:采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。本发明无需标记语料库,提取代码之间的相关性和差异性信息,依据技术特征进行代码对比。
本发明的技术效果:
1、相较于传统方法,本发明所使用的代码对比方法,不需要标记语料库,综合考虑了函数名、调用结构和内置类等技术特征的语义信息,能够有效地提取代码之间的相关性和差异性信息。
2、相较于传统方法,本发明在函数调用结构语义编码阶段采用基于图卷积神经网络的自编码器方法进行图语义编码,可以捕获函数调用结构的语义信息。
3、相较于传统方法,本发明基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比,保留了代码的逻辑调用信息,进而提高了本发明方法的精准率。
附图说明
图1是本发明一种面向技术特征的源代码对比方法流程图;
图2是本发明面向技术特征的代码对比模型框架图。
具体实施方式
下面结合实施例和说明书附图做详细的说明,但不限于此。
实施例1
如图1、图2所示,一种面向技术特征的源代码对比方法,包括:
代码文件预处理阶段,用于输出代码的函数调用结构、函数名称和内置类名称;
对所述函数调用结构语义编码阶段:采用基于图卷积神经网络的自编码器方法对函数调用结构进行语义编码,得到函数调用结构向量,用于基于语义向量对比代码结构语义,其中,优选的,所述图语义编码具体按照以下文献实现:William L. Hamilton, RexYing, Jure Leskovec. Inductive representation learning on large graphs[C].Proceedings of the 31st International Conference on Neural InformationProcessing Systems. 2017: 1025-1035;
对所述函数名称和内置类名称的调用信息使用TF-IDF算法编码阶段,分别得到函数向量和内置类向量,用于基于函数名称和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;
最后将函数调用结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,以比对代码相似度。
所述代码文件预处理阶段包括:
使用函数调用结构生成工具得到代码技术特征中函数调用结构的DOT文件,其中,DOT文件用于描述函数调用结构的图表示中节点以及节点之间的关系。例如Pycallgraph工具可以生成Python应用程序的函数调用结构的图表示,使用Graphviz工具可以将DOT文件转化为函数调用结构图片,将DOT文件经过预处理后得到函数调用结构的图表示:
所述函数调用结构语义编码阶段包括:
代码文件经过上述预处理后得到函数调用结构的图表示、函数名称和内置类名称,使用基于图卷积神经网络(Graph Convolutional Neural Networks,GCN)的自编码器方法对函数调用结构的图表示进行语义编码,结构语义向量h s 包含函数属性和存在函数调用边的信息,编码器的计算如公式(II)至(IV)所示:
Relu是激活函数;W 0 和W 1 是待学习的参数,对图自编码器进行训练后得到的;所述图自编码器包括编码器和解码器,所述编码器的计算如公式(II)至(IV)所示;
D是度矩阵,度矩阵是对角阵,对角上的元素为各个顶点的度;
所述图自编码器采用sigmoid函数作为解码器来重构原始的图,所述解码器的计算如公式(V)所示:
实施例2
如实施例1所述一种面向技术特征的源代码对比方法,为了使结构语义向量中包含丰富的节点和边的信息,使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似,使用重构图的邻接矩阵与原始图的邻接矩阵的交叉熵作为损失函数,损失函数的计算如公式(VI)所示:
实施例3
如实施例1所述一种面向技术特征的源代码对比方法,
所述函数名称和内置类名称的调用信息编码阶段包括:在函数相似性部分,基于函数名称的调用信息向量进行函数相似性对比,算法代码包含大量提供基础性功能的函数,函数具有明确的功能、入口调用参数和返回值,所以功能相似的代码采用的函数也是相似的,根据函数名称的TF-IDF计算模块得到函数调用信息向量,函数向量h f 的计算如公式(VII)所示:
在公式(VII)中,h f 表示函数向量;f(fun i )表示代码中第i个调用的函数的TFIDF值;
在内置类相似性部分,基于内置类名称的调用信息向量进行内置类的相似性对比,函数一般都封装在内置类中,如果代码实现的功能相似,那么代码导入的内置类也是相似的,根据内置类的TF-IDF计算模块得到内置类调用信息向量,内置类向量h c 的计算如公式(VIII)所示:
在公式(VIII)中,h c 表示内置类向量;f(cls i )表示代码中导入的第i个内置类的TFIDF值。
实施例4
如实施例1所述一种面向技术特征的源代码对比方法,将函数调用结构向量、函数向量和内置类向量拼接作为技术特征向量,技术特征向量h的计算如公式(IX)所示:
在公式(IX)中,h表示技术特征向量,⊕是向量拼接符,由于函数调用结构向量、函数向量和内置类向量的长度均受到代码中调用函数的数量和导入内置类的数量影响,所以将函数调用结构向量、函数向量和内置类向量均线性变换为一定维度的向量;
最后,将技术特征向量的余弦相似度值sim α 作为检索出的可复用代码和新设计代码的相似度,代码相似度的计算如公式(X)所示:
在公式(X)中,sim α 是检索出的可复用代码和新设计代码的相似度值;cos是余弦相似度函数;h sea 是检索出可复用代码的技术特征向量;h des 是新设计代码的技术特征向量。
实施例5
一种加载有如实施例1-4所述方法的***,包括:
代码文件预处理阶段处理模块;函数调用结构语义编码阶段处理模块;函数和内置类名称的调用信息编码阶段处理模块;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量;基于技术特征向量的代码对比功能。
实施例6
一种加载有如实施例1-4所述方法的程序产品,包括:所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行上述的方法。
实施例7
一种加载有如实施例1-4所述方法的计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现本发明记载的任一项所述方法的步骤。
实施例8
一种利用如实施例1-4所述方法的应用方法:采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。
利用如实施例1-5、8所述方法,以“句法分析”的代码为例,其将检索出的可复用代码和新设计代码如下:
首先进行代码文件的输入:
新设计代码为code 1 ,检索出的可复用代码为code 2 ;
函数名称集合V={main,nextInt,for,print,while,if}
函数属性集合A V ={[0.32,0.41],[0.85,0.20],[0.17,0.66]…}
存在函数调用边的集合E={(main,nextInt),(main,for),(for,print)…}
边属性的集合A E ={1,1,1…}
内置类名称集合为{java.io.BufferedReader,java.util.HashMap,java.io.IOException…}
函数调用结构语义编码阶段:
使用基于图卷积神经网络(Graph Convolutional Neural Networks,GCN)的自编码器方法进行函数调用结构语义编码。
函数和内置类名称的调用信息编码阶段:
根据函数名称的TF-IDF计算模块可以得到函数调用信息向量h f =[0.61,0.73,0.82,0.53…]
根据内置类名称的TF-IDF计算模块可以得到内置类调用信息向量h c =[0.86,0.62,0.45,0.72…]
拼接:
将结构语义向量、函数向量和内置类向量拼接作为技术特征向量h des =[0.24,0.56,0.46,0.89…,0.61,0.73,0.82,0.53…,0.86,0.62,0.45,0.72…]
将检索出的可复用代码code 2 和新设计代码code 1 对比:
根据拼接后的结果得到新设计代码code 1 的技术特征向量为h des ,同理可以得到可复用代码code 2 的技术特征向量h sea ,将技术特征向量的余弦相似度值作为代码相似度,sim α =cos(h sea ,h des )=0.75。
Claims (7)
1.一种面向技术特征的源代码对比方法,其特征在于,包括:
代码文件预处理阶段,用于输出代码的函数调用结构、函数名称和内置类名称;
对所述函数调用结构语义编码阶段:采用基于图卷积神经网络的自编码器方法对函数调用结构进行语义编码,得到函数调用结构向量;
对所述函数名称和内置类名称的调用信息使用TF-IDF算法编码阶段,分别得到函数向量和内置类向量;
最后将函数调用结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,以比对代码相似度;
所述代码文件预处理阶段包括:
所述函数调用结构语义编码阶段包括:
代码文件经过上述预处理后得到函数调用结构的图表示、函数名称和内置类名称,使用基于图卷积神经网络GCN的自编码器方法对函数调用结构的图表示进行语义编码,结构语义向量h s 包含函数属性和存在函数调用边的信息,编码器的计算如公式(II)至(IV)所示:
Relu是激活函数;W 0 和W 1 是待学习的参数,对图自编码器进行训练后得到的;所述图自编码器包括编码器和解码器,所述编码器的计算如公式(II)至(IV)所示;
D是度矩阵,度矩阵是对角阵,对角上的元素为各个顶点的度;
所述图自编码器采用sigmoid函数作为解码器来重构原始的图,所述解码器的计算如公式(V)所示:
使用重构图的邻接矩阵与原始图的邻接矩阵的交叉熵作为损失函数,损失函数的计算如公式(VI)所示:
4.一种加载有如权利要求1-3任意一项所述方法的***,其特征在于,包括:
代码文件预处理阶段处理模块;函数调用结构语义编码阶段处理模块;函数和内置类名称的调用信息编码阶段处理模块;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量;基于技术特征向量的代码对比功能。
5.一种加载有如权利要求1-3任意一项所述方法的程序产品,其特征在于,包括:其中,程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行上述的方法。
6.一种加载有如权利要求1-3任意一项所述方法的计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述方法的步骤。
7.一种利用如权利要求1-3任意一项所述方法的应用方法,其特征在于,包括:采用基于图卷积神经网络的自编码器方法进行图语义编码,基于语义向量对比代码结构语义;基于函数和内置类名称的调用信息向量进行函数相似性和内置类的相似性对比;最后将结构向量、函数向量和内置类向量进行拼接作为整体技术特征向量,比对代码相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210808406.7A CN114880023B (zh) | 2022-07-11 | 2022-07-11 | 面向技术特征的源代码对比方法、***与程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210808406.7A CN114880023B (zh) | 2022-07-11 | 2022-07-11 | 面向技术特征的源代码对比方法、***与程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114880023A CN114880023A (zh) | 2022-08-09 |
CN114880023B true CN114880023B (zh) | 2022-09-30 |
Family
ID=82683640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210808406.7A Active CN114880023B (zh) | 2022-07-11 | 2022-07-11 | 面向技术特征的源代码对比方法、***与程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880023B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976318A (zh) * | 2010-11-15 | 2011-02-16 | 北京理工大学 | 一种基于数字指纹的代码相似度检测方法 |
CN110147235B (zh) * | 2019-03-29 | 2021-01-01 | 中国科学院信息工程研究所 | 一种源代码与二进制代码间的语义比对方法和装置 |
CN110502361B (zh) * | 2019-08-29 | 2023-05-30 | 扬州大学 | 面向bug报告的细粒度缺陷定位方法 |
CN111897970B (zh) * | 2020-07-27 | 2024-05-10 | 平安科技(深圳)有限公司 | 基于知识图谱的文本比对方法、装置、设备及存储介质 |
CN112286575A (zh) * | 2020-10-20 | 2021-01-29 | 杭州云象网络技术有限公司 | 基于图匹配模型的智能合约相似度检测方法及*** |
CN112800172B (zh) * | 2021-02-07 | 2022-07-12 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
-
2022
- 2022-07-11 CN CN202210808406.7A patent/CN114880023B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114880023A (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256487B2 (en) | Vectorized representation method of software source code | |
Perez-Martin et al. | Improving video captioning with temporal composition of a visual-syntactic embedding | |
CN110532554A (zh) | 一种中文摘要生成方法、***及存储介质 | |
CN112487812B (zh) | 一种基于边界识别的嵌套实体识别方法及*** | |
CN109871955A (zh) | 一种航空安全事故因果关系抽取方法 | |
CN111124487B (zh) | 代码克隆检测方法、装置以及电子设备 | |
CN109840322A (zh) | 一种基于强化学习的完形填空型阅读理解分析模型及方法 | |
CN113743119B (zh) | 中文命名实体识别模块、方法、装置及电子设备 | |
CN112100401B (zh) | 面向科技服务的知识图谱构建方法、装置、设备及存储介质 | |
CN112052684A (zh) | 电力计量的命名实体识别方法、装置、设备和存储介质 | |
CN110555305A (zh) | 基于深度学习的恶意应用溯源方法及相关装置 | |
CN110019653B (zh) | 一种融合文本和标签网络的社交内容表征方法和*** | |
CN116661805B (zh) | 代码表示的生成方法和装置、存储介质及电子设备 | |
CN115357904B (zh) | 一种基于程序切片和图神经网络的多类漏洞检测方法 | |
CN114329225A (zh) | 基于搜索语句的搜索方法、装置、设备及存储介质 | |
CN114881043B (zh) | 基于深度学习模型的法律文书语义相似度评估方法及*** | |
CN112925904A (zh) | 一种基于Tucker分解的轻量级文本分类方法 | |
CN111831624A (zh) | 数据表创建方法、装置、计算机设备及存储介质 | |
CN109446299A (zh) | 基于事件识别的搜索电子邮件内容的方法及*** | |
CN117574898A (zh) | 基于电网设备的领域知识图谱更新方法及*** | |
CN108875024B (zh) | 文本分类方法、***、可读存储介质及电子设备 | |
CN113704473A (zh) | 基于长文本特征提取优化的媒体假新闻检测方法及*** | |
CN114880023B (zh) | 面向技术特征的源代码对比方法、***与程序产品 | |
CN117312559A (zh) | 基于树结构信息感知的方面级情感四元组抽取方法及*** | |
Zhou et al. | Attending via both fine-tuning and compressing |
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 |