CN114816519A - 基于抽象语法树及令牌的代码克隆检测的方法及应用 - Google Patents
基于抽象语法树及令牌的代码克隆检测的方法及应用 Download PDFInfo
- Publication number
- CN114816519A CN114816519A CN202210450834.7A CN202210450834A CN114816519A CN 114816519 A CN114816519 A CN 114816519A CN 202210450834 A CN202210450834 A CN 202210450834A CN 114816519 A CN114816519 A CN 114816519A
- Authority
- CN
- China
- Prior art keywords
- code
- block
- abstract syntax
- token
- clone
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000012216 screening Methods 0.000 claims abstract description 23
- 108091029480 NONCODE Proteins 0.000 claims abstract description 13
- 238000001914 filtration Methods 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000010367 cloning Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012360 testing method 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
-
- 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
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4436—Exlining; Procedural abstraction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于抽象语法树及令牌的代码克隆检测的方法及应用,该方法包括以下步骤:解析所有代码为令牌和抽象语法树;通过所述令牌过滤掉非代码克隆的代码块,并通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块;判断所述候选块与所述查询块的相似度下限是否高于预设阈值;若是,将所述候选块和所述查询块转化为克隆对输出。该方法能够通过代码块的令牌和抽象语法树过滤非代码克隆的代码块,帮助缩小候选范围,提高判断不同克隆类型时代码片段之间相似度的判断效率,进而提高判断的精确率。
Description
技术领域
本发明是关于代码克隆检测领域,特别是关于一种基于抽象语法树及令牌的代码克隆检测的方法及应用。
背景技术
代码克隆,也称为重复代码或相似代码,指的是存在于代码库中两个及以上的相同或者相似的源代码片段。代码克隆产生的原因有很多,主要是开发者为了提高效率而使用的复用技术,包括复制粘贴已有的代码片段并进行修改、使用开发框架、复用设计模式等。
大量的实证研究表明,代码克隆广泛存在于各个开源与闭源代码仓库之中,并且占据了相当比例,例如,有研究在Linux系统中检测到了22.3%的代码克隆,Kamiya等人发现在JDK中存在29%的代码克隆,在某些软件系统中代码克隆甚至达到了50%。广泛存在的代码克隆一定程度上帮助了软件系统的开发,能够产生正面的效益,比如可以利用克隆系统测试新增功能对原系统的影响,然而也有许多研究指出数量巨大的代码克隆会对软件系统造成负面的影响。随着软件生命周期的进行,未得到良好克隆管理的软件系统会因为代码克隆造成代码库的不断膨胀,从而增加维护成本。软件缺陷也会因为代码克隆而在系统中被传播,降低了软件系统的可靠性。所以,如果不及时控制代码克隆的增长,对系统的管理、维护、修复等行为都会耗费额外的人力,导致软件维护成本的提高。
鉴于此,研究者们致力于研究并解决代码克隆衍生问题。其中,如何更快速、更准确、更便捷地发现代码克隆,是代码克隆研究的核心问题,而利用人工的检测代码克隆效率低,成本高,准确率也无法保证。围绕这个问题,软件工程研究者们提出代码克隆检测技术,目的在于自动化定位软件系统中的代码克隆,能够节省成本,减少出错风险。以此帮助开发人员和管理者及时发现代码克隆,并采取修复措施,有助于更好地保证软件质量。代码克隆检测在剽窃检测、版权侵犯调查、代码重构,以及管理代码质量、寻找缺陷、发现复用模式等方面发挥了重要作用。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种基于抽象语法树及令牌的代码克隆检测的方法及应用,解决如何快速准确的发现代码克隆的问题。
为实现上述目的,本发明的实施例提供了一种基于抽象语法树及令牌的代码克隆检测的方法。
在本发明的一个或多个实施方式中,所述方法包括:解析所有代码为令牌和抽象语法树;通过所述令牌过滤掉非代码克隆的代码块,并通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块;判断所述候选块与所述查询块的相似度下限是否高于预设阈值;若是,将所述候选块和所述查询块转化为克隆对输出。
在本发明的一个或多个实施方式中,所述解析所有代码为令牌和抽象语法树,包括:将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;解析所述代码块的令牌和抽象语法树;以及计算所述代码块对应的令牌及令牌频率,并计算所述代码块对应的抽象语法树的高度和宽度。
在本发明的一个或多个实施方式中,通过所述令牌过滤掉非代码克隆的代码块,包括:为所述查询块的令牌创建部分索引;以及判断所述代码块是否具有所述查询块索引对应的令牌;若是,将所述代码块设置为第一候选块。
在本发明的一个或多个实施方式中,通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块,包括:判断所述第一候选块与所述查询块对应的抽象语法树的高度和宽度是否相同;若是,将所述第一候选块设置为第二候选块。
在本发明的一个或多个实施方式中,所述方法还包括:分别从所述第二候选块中筛选出与所述查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将所述候选块转化为克隆对;将所述预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
在本发明的另一个方面当中,提供了一种基于抽象语法树及令牌的代码克隆检测的装置,其包括解析模块、筛选模块、判断模块和输出模块。
解析模块,用于解析所有代码为令牌和抽象语法树。
筛选模块,用于通过所述令牌过滤掉非代码克隆的代码块,并通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块。
判断模块,用于判断所述候选块与所述查询块的相似度下限是否高于预设值。
输出模块,用于将所述候选块和所述查询块转化为克隆对输出。
在本发明的一个或多个实施方式中,所述解析模块还用于:将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;解析所述代码块的令牌和抽象语法树;以及计算所述代码块对应的令牌及令牌频率,并计算所述代码块对应的抽象语法树的高度和宽度。
在本发明的一个或多个实施方式中,所述筛选模块还用于:为所述查询块的令牌创建部分索引;以及判断所述代码块是否具有所述查询块索引对应的令牌;若是,将所述代码块设置为第一候选块。
在本发明的一个或多个实施方式中,所述筛选模块还用于:判断所述第一候选块与所述查询块对应的抽象语法树的高度和宽度是否相同;若是,将所述第一候选块设置为第二候选块。
在本发明的一个或多个实施方式中,所述判断模块还用于:分别从所述第二候选块中筛选出与所述查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将所述候选块转化为克隆对;将所述预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
在本发明的另一个方面当中,提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的基于抽象语法树及令牌的代码克隆检测的方法。
在本发明的另一个方面当中,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的基于抽象语法树及令牌的代码克隆检测的方法的步骤。
与现有技术相比,根据本发明实施方式的基于抽象语法树及令牌的代码克隆检测的方法及应用,其能够通过代码块的令牌和抽象语法树过滤非代码克隆的代码块,帮助缩小候选范围,提高判断不同克隆类型时代码片段之间相似度的判断效率,进而提高判断的精确率。
附图说明
图1是根据本发明一实施方式的基于抽象语法树及令牌的代码克隆检测的方法的流程图;
图2是根据本发明一实施方式的基于抽象语法树及令牌的代码克隆检测的装置的结构图;
图3是根据本发明一实施方式的基于抽象语法树及令牌的代码克隆检测的计算设备的硬件结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
以下结合附图,详细说明本发明各实施例提供的技术方案。
实施例1
如图1所示,介绍本发明的一个实施例中基于抽象语法树及令牌的代码克隆检测的方法,该方法包括如下步骤。
在步骤S101中,解析所有代码为令牌和抽象语法树。
将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;解析每个代码块的令牌和抽象语法树;以及计算代码块对应的令牌及令牌频率,并计算代码块对应的抽象语法树的高度和宽度。
在步骤S102中,通过令牌过滤掉非代码克隆的代码块,并通过抽象语法树筛选出与查询块具有相同代码克隆类型的候选块。
根据代码克隆相似程度的不同,一般将代码克隆分为4种类型,即完全相同的代码(类型1)、重命名的代码(类型2)、几乎相同的代码(类型3)和语义相似的代码(类型4),从类型1到类型4,代码克隆的相似程度逐渐降低,检测的难度也逐渐增加。
代码克隆的类型主要分为两大类,句法克隆和语义克隆。句法克隆指文本相似的代码片段,语义克隆则是指功能相似的代码片段。基于这两大类,代码克隆可以被划分为四小类,其中前三种为句法克隆,第四种为语义克隆。
为查询块的令牌创建部分索引,方便后续的匹配相似度。具体的,在代码块中构建一个倒排索引,将其映射标记到包含它们的代码块,每个代码块中仅包含标记子集的部分索引。
采用过滤启发式为代码块过滤部分非代码克隆的代码块。判断代码块是否具有查询块索引对应的令牌;若是,将代码块设置为第一候选块。利用过滤启发式减少索引,可以减少检测克隆所需的代码块比较的数量。
具体的,过滤启发式指给定代码块Bx和By,分别由t个以某种预定义顺序组成的标记,如果|Bx∩By|≥i,则Bx和By的子块SBx和SBy分别由前t-j+1个标记组成,必须至少具有一个匹配的令牌。包括代码块中的标记需要遵循预定义的全局顺序。其中全局顺序按照语料库中令牌的出现频率来排序。
根据经过令牌过滤后的候选块与查询块对应的抽象语法树的高度和宽度再次过滤非代码克隆的代码块,其中,只有经过令牌过滤后的候选块与查询块对应的抽象语法树的高度和宽度都相同的才可以被选为候选块,否则不考虑。
在步骤S103中,判断候选块与查询块的相似度下限是否高于预设阈值。
利用令牌的排序来测量代码块相似性的实时上限和下限,以便拒绝或接受具有较少令牌比较的克隆候选者。
在步骤S104中,将候选块和查询块转化为克隆对输出。
根据克隆对结果再次对输出进行处理,输出阈值范围对应克隆类型。
具体的,分别从第二候选块中筛选出与查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将候选块转化为克隆对;将预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
根据本发明实施方式的基于抽象语法树及令牌的代码克隆检测的方法及应用,其能够通过代码块的令牌和抽象语法树过滤非代码克隆的代码块,帮助缩小候选范围,提高判断不同克隆类型时代码片段之间相似度的判断效率,进而提高判断的精确率。
如图2所示,介绍根据本发明具体实施方式的基于抽象语法树及令牌的代码克隆检测的装置。
在本发明的实施方式中,基于抽象语法树及令牌的代码克隆检测的装置包括解析模块201、筛选模块202、判断模块203和输出模块204。
解析模块201,用于解析所有代码为令牌和抽象语法树。
筛选模块202,用于通过令牌过滤掉非代码克隆的代码块,并通过抽象语法树筛选出与查询块具有相同代码克隆类型的候选块。
判断模块203,用于判断候选块与查询块的相似度下限是否高于预设值。
输出模块204,用于将候选块和查询块转化为克隆对输出。
解析模块201还用于:将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;解析代码块的令牌和抽象语法树;以及计算代码块对应的令牌及令牌频率,并计算代码块对应的抽象语法树的高度和宽度。
筛选模块202还用于:为查询块的令牌创建部分索引;以及判断代码块是否具有查询块索引对应的令牌;若是,将代码块设置为第一候选块。
筛选模块202还用于:判断第一候选块与查询块对应的抽象语法树的高度和宽度是否相同;若是,将第一候选块设置为第二候选块。
判断模块203还用于:分别从第二候选块中筛选出与查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将候选块转化为克隆对;将预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
图3示出了根据本说明书的实施例的用于基于抽象语法树及令牌的代码克隆检测的计算设备30的硬件结构图。如图3所示,计算设备30可以包括至少一个处理器301、存储器302(例如非易失性存储器)、内存303和通信接口304,并且至少一个处理器301、存储器302、内存303和通信接口304经由总线305连接在一起。至少一个处理器301执行在存储器302中存储或编码的至少一个计算机可读指令。
应该理解,在存储器302中存储的计算机可执行指令当执行时使得至少一个处理器301进行本说明书的各个实施例中以上结合图1-3描述的各种操作和功能。
在本说明书的实施例中,计算设备30可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-3描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
根据本发明实施方式的基于抽象语法树及令牌的代码克隆检测的方法及应用,其能够通过代码块的令牌和抽象语法树过滤非代码克隆的代码块,帮助缩小候选范围,提高判断不同克隆类型时代码片段之间相似度的判断效率,进而提高判断的精确率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述方法包括:
解析所有代码为令牌和抽象语法树;
通过所述令牌过滤掉非代码克隆的代码块,并通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块;
判断所述候选块与所述查询块的相似度下限是否高于预设阈值;若是,
将所述候选块和所述查询块转化为克隆对输出。
2.如权利要求1所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述解析所有代码为令牌和抽象语法树,包括:
将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;
解析所述代码块的令牌和抽象语法树;以及
计算所述代码块对应的令牌及令牌频率,并计算所述代码块对应的抽象语法树的高度和宽度。
3.如权利要求2所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,通过所述令牌过滤掉非代码克隆的代码块,包括:
为所述查询块的令牌创建部分索引;以及
判断所述代码块是否具有所述查询块索引对应的令牌;若是,
将所述代码块设置为第一候选块。
4.如权利要求3所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块,包括:
判断所述第一候选块与所述查询块对应的抽象语法树的高度和宽度是否相同;若是,
将所述第一候选块设置为第二候选块。
5.如权利要求4所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述方法还包括:
分别从所述第二候选块中筛选出与所述查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将所述候选块转化为克隆对;
将所述预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
6.一种基于抽象语法树及令牌的代码克隆检测的装置,其特征在于,所述装置包括:
解析模块,用于解析所有代码为令牌和抽象语法树;
筛选模块,用于通过所述令牌过滤掉非代码克隆的代码块,并通过所述抽象语法树筛选出与查询块具有相同代码克隆类型的候选块;
判断模块,用于判断所述候选块与所述查询块的相似度下限是否高于预设值;
输出模块,用于将所述候选块和所述查询块转化为克隆对输出。
7.如权利要求6所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述解析模块还用于:
将所有代码拆分为以函数为单位的代码块,并给每个代码块编号,计算对应的哈希值;
解析所述代码块的令牌和抽象语法树;以及
计算所述代码块对应的令牌及令牌频率,并计算所述代码块对应的抽象语法树的高度和宽度。
8.如权利要求7所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述筛选模块还用于:
为所述查询块的令牌创建部分索引;以及
判断所述代码块是否具有所述查询块索引对应的令牌;若是,
将所述代码块设置为第一候选块。
9.如权利要求8所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述筛选模块还用于:
判断所述第一候选块与所述查询块对应的抽象语法树的高度和宽度是否相同;若是,
将所述第一候选块设置为第二候选块。
10.如权利要求9所述的基于抽象语法树及令牌的代码克隆检测的方法,其特征在于,所述判断模块还用于:
分别从所述第二候选块中筛选出与所述查询块的相似度下限高于预设阈值范围上限和下限的候选块,并将所述候选块转化为克隆对;
将所述预设阈值范围内重复的克隆对删除,以得到满足预设阈值范围的最终克隆对。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210450834.7A CN114816519A (zh) | 2022-04-26 | 2022-04-26 | 基于抽象语法树及令牌的代码克隆检测的方法及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210450834.7A CN114816519A (zh) | 2022-04-26 | 2022-04-26 | 基于抽象语法树及令牌的代码克隆检测的方法及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816519A true CN114816519A (zh) | 2022-07-29 |
Family
ID=82506959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210450834.7A Pending CN114816519A (zh) | 2022-04-26 | 2022-04-26 | 基于抽象语法树及令牌的代码克隆检测的方法及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816519A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302089A (zh) * | 2023-05-23 | 2023-06-23 | 华中科技大学 | 基于图片相似度的代码克隆检测方法、系统及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729580A (zh) * | 2014-01-27 | 2014-04-16 | 国家电网公司 | 一种检测软件抄袭的方法和装置 |
-
2022
- 2022-04-26 CN CN202210450834.7A patent/CN114816519A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729580A (zh) * | 2014-01-27 | 2014-04-16 | 国家电网公司 | 一种检测软件抄袭的方法和装置 |
Non-Patent Citations (1)
Title |
---|
HITESH SAJNANI等: "SourcererCC: Scaling Code Clone Detection to Big-Code", IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 31 December 2016 (2016-12-31), pages 2 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302089A (zh) * | 2023-05-23 | 2023-06-23 | 华中科技大学 | 基于图片相似度的代码克隆检测方法、系统及存储介质 |
CN116302089B (zh) * | 2023-05-23 | 2023-08-18 | 华中科技大学 | 基于图片相似度的代码克隆检测方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101732764B1 (ko) | 코드 클론 검출을 이용하는 지능형 코드 디퍼런싱을 수행하는 방법 및 시스템 | |
EP3674918B1 (en) | Column lineage and metadata propagation | |
US20120159434A1 (en) | Code clone notification and architectural change visualization | |
US20190205125A1 (en) | Determining provenance of files in source code projects | |
US20080172655A1 (en) | Saving Code Coverage Data for Analysis | |
Akram et al. | Droidcc: A scalable clone detection approach for android applications to detect similarity at source code level | |
EP3686749A1 (en) | Method and device for acquiring data model in knowledge graph, and medium | |
US9916158B2 (en) | Cognitive feature analytics | |
CN115827895A (zh) | 一种漏洞知识图谱处理方法、装置、设备及介质 | |
CN103955429B (zh) | 确定回归测试范围的方法及装置 | |
US20180293160A1 (en) | Comparing software projects having been analyzed using different criteria | |
CN111722998A (zh) | 代码的质量控制方法、系统、设备及存储介质 | |
CN112363814A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN114816519A (zh) | 基于抽象语法树及令牌的代码克隆检测的方法及应用 | |
Shi et al. | How to better utilize code graphs in semantic code search? | |
US20160132809A1 (en) | Identifying and amalgamating conditional actions in business processes | |
Mamede et al. | A transformer-based IDE plugin for vulnerability detection | |
Rinnone et al. | NetMatchStar: an enhanced Cytoscape network querying app | |
US8875093B2 (en) | Instantiating a coding competition to develop a program module in a networked computing environment | |
CN111221690B (zh) | 针对集成电路设计的模型确定方法、装置及终端 | |
CN117272982A (zh) | 基于大型语言模型的协议文本检测方法及装置 | |
US11250127B2 (en) | Binary software composition analysis | |
Abdelfattah et al. | Detecting semantic clones in microservices using components | |
CN113805861B (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
Tukaram | Design and development of software tool for code clone search, detection, and analysis |
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 |