CN112214419A - 组件代码相似度的检测方法及设备 - Google Patents
组件代码相似度的检测方法及设备 Download PDFInfo
- Publication number
- CN112214419A CN112214419A CN202011424824.3A CN202011424824A CN112214419A CN 112214419 A CN112214419 A CN 112214419A CN 202011424824 A CN202011424824 A CN 202011424824A CN 112214419 A CN112214419 A CN 112214419A
- Authority
- CN
- China
- Prior art keywords
- code
- version
- component
- detected
- codes
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种组件代码相似度的检测方法及设备,方法包括:获取组件库中各个组件对应的目标版本的第一版本代码;检测获取到的各个第一版本代码中是否存在与待测代码相似的第一目标版本代码;当存在时,获取第一目标版本代码对应的组件中除上述目标版本之外剩余版本的第二版本代码;在获取到的各个第二版本代码中检测与待测代码相似的第二目标版本代码,并根据第一目标版本代码与第二目标版本代码确定与待测代码相似的版本代码。即本申请中在检测组件代码与待测代码的相似度时,不需要获取各个组件对应的所有版本的版本代码来逐个与待测代码进行相似度匹配,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种组件代码相似度的检测方法及设备。
背景技术
随着软件工程的发展,相似程序代码的检测工作在软件测试、恶意软件检测、知识产权保护以及计算机教学等领域均发挥着重要的作用。
现有的代码相似度检测工具或平台在检测代码的相似度时,通常是将组件库中的所有组件代码都加载到内存中,然后再与待检测代码逐行进行匹配,从而查找出与待检测代码相似的代码。
但是,由于常见的组件代码数量级别非常大,采用上述方式进行检测会占用较大的内存,且需要耗费大量的时间。
发明内容
本申请实施例提供一种组件代码相似度的检测方法及设备,可以解决现有的代码相似度检测方式占用内存高,且耗时较久的技术问题。
第一方面,本申请实施例提供一种组件代码相似度的检测方法,该方法包括:
获取组件库中各个组件对应的目标版本的第一版本代码;
检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码;
当存在所述第一目标版本代码时,获取所述第一目标版本代码对应的组件中除所述目标版本之外剩余版本的第二版本代码;
在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,并根据所述第一目标版本代码与所述第二目标版本代码确定与所述待测代码相似的版本代码。
可选的,所述组件库中的各个组件均包括多个版本,所述获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别在所述各个组件对应的所有版本中随机选取一个版本确定为所述各个组件对应的目标版本。
可选的,所述组件库中的各个组件均包括多个版本,所述获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别将所述各个组件对应的所有版本中预先指定的一个版本确定为所述各个组件对应的目标版本。
可选的,所述检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码,包括:
分别检测各个所述第一版本代码与所述待测代码的相似度,将各个所述第一版本代码中与所述待测代码的相似度大于第一相似度阈值的第一版本代码确定为所述第一目标版本代码。
可选的,所述在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,包括:
分别检测各个所述第二版本代码与所述待测代码的相似度,将各个所述第二版本代码中与所述待测代码的相似度大于第二相似度阈值的第二版本代码确定为所述第二目标版本代码。
第二方面,本申请实施例提供一种组件代码相似度的检测装置,该装置包括:
获取模块,用于获取组件库中各个组件对应的目标版本的第一版本代码;
检测模块,用于检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码;
所述获取模块,还用于当存在所述第一目标版本代码时,获取所述第一目标版本代码对应的组件中除所述目标版本之外剩余版本的第二版本代码;
所述检测模块,还用于在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,并根据所述第一目标版本代码与所述第二目标版本代码确定与所述待测代码相似的版本代码。
可选的,所述组件库中的各个组件均包括多个版本,所述装置还包括:
确定模块,用于分别在所述各个组件对应的所有版本中随机选取一个版本确定为所述各个组件对应的目标版本。
可选的,所述组件库中的各个组件均包括多个版本,所述装置还包括:
确定模块,用于分别将所述各个组件对应的所有版本中预先指定的一个版本确定为所述各个组件对应的目标版本。
可选的,检测模块具体用于:分别检测各个所述第一版本代码与所述待测代码的相似度,将各个所述第一版本代码中与所述待测代码的相似度大于第一相似度阈值的第一版本代码确定为所述第一目标版本代码。
可选的,检测模块具体用于:分别检测各个所述第二版本代码与所述待测代码的相似度,将各个所述第二版本代码中与所述待测代码的相似度大于第二相似度阈值的第二版本代码确定为所述第二目标版本代码。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面提供的组件代码相似度的检测方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面提供的组件代码相似度的检测方法。
本申请实施例所提供的组件代码相似度的检测方法及设备,在检测组件代码与待测代码的相似度时,先分别获取各个组件对应的部分版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件对应的部分版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件对应的部分版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码。即本申请中在检测组件代码与待测代码的相似度时,不需要获取各个组件对应的所有版本的版本代码来逐个与待测代码进行相似度匹配,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对本申请实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为一种检测组件代码相似度的流程示意图;
图2为本申请实施例中提供的一种组件代码相似度的检测方法的流程示意图;
图3为本申请实施例中提供的另一种检测组件代码相似度的流程示意图;
图4为本申请实施例中提供的一种组件代码相似度的检测装置的模块示意图;
图5为本申请实施例中提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。
此外,术语“包括”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着软件工程的发展,相似程序代码的检测工作在软件测试、恶意软件检测、知识产权保护以及计算机教学等领域均发挥着重要的作用。现有的代码相似度检测工具或平台在检测代码的相似度时,通常是将组件库中的所有组件代码都加载到内存中,然后再与待检测代码逐行进行相似度匹配,从而查找出与待检测代码相似的代码。
为了更好的理解,参照图1,图1为一种检测组件代码相似度的流程示意图。在图1中,需要先将组件库中的所有组件对应的各个版本的版本代码都加载到内存中,然后将待测代码与各个组件对应的所有版本的版本代码进行相似度匹配,将相似度大于预设相似度阈值的版本代码作为与待测代码相似的版本代码输出。但是,由于常见的组件代码数量级别非常大,采用上述方式进行检测会占用较大的内存,且需要耗费大量的时间。
为了解决上述技术问题,本申请提出了一种组件代码相似度的检测方法,在检测组件代码与待测代码的相似度时,先分别获取各个组件对应的部分版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件对应的部分版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件对应的部分版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。下面采用详细的实施例进行详细说明。
参照图2,图2为本申请实施例中提供的一种组件代码相似度的检测方法的流程示意图,在一种可行的实施方式中,该方法包括:
S201、获取组件库中各个组件对应的目标版本的第一版本代码。
其中,上述组件库中包括多个组件,每个组件均可以包括多个版本,每个版本对应不同的版本代码。
在本实施例中,组件包含的范围比较广泛,一个程序集、一个链接库、一个代码模块,甚至代码中的一个类型都可以称为"组件",本实施例不做限定。
示例性的,上述组件可以包括菜单组件、按钮组件、对话框组件、编辑框组件、单选框组件、复选框组件、列表框组件、内容显示组件(图片或文字等)和滚动条组件等。
在检测组件代码与待测代码的相似度时,可以先获取组件库中各个组件对应的目标版本的第一版本代码。其中,各个组件对应的目标版本可以为各个组件对应的所有版本中的其中一个版本或其中几个版本。例如,某个组件对应的目标版本为该组件对应的所有版本中的一个中间版本。
S202、检测获取到的各个第一版本代码中是否存在与待测代码相似的第一目标版本代码。
在本实施例中,可以分别检测获取到的各个第一版本代码与待测代码的相似度,将各个第一版本代码中与待测代码的相似度大于第一相似度阈值的第一版本代码确定为第一目标版本代码。
可选的,上述第一相似度阈值可以为0。
S203、当存在第一目标版本代码时,获取第一目标版本代码对应的组件中除上述目标版本之外剩余版本的第二版本代码。
在本实施例中,若某一个组件对应的目标版本的第一版本代码与待测代码的相似度大于第一相似度阈值,则可以说明该组件的组件代码与待测代码之间存在一定的相似性,因此可以继续获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,确定该组件对应的剩余版本的版本代码中是否还存在与待测代码相似的版本代码;若某一个组件对应的目标版本的第一版本代码与待测代码的相似度小于或等于第一相似度阈值,则可以说明该组件的组件代码与待测代码之间不存在相似性,因此不需要再获取该组件对应的剩余版本的版本代码。
S204、在获取到的各个第二版本代码中检测与待测代码相似的第二目标版本代码,并根据第一目标版本代码与第二目标版本代码确定与待测代码相似的版本代码。
在本实施例中,分别检测各个第二版本代码与待测代码的相似度,将各个第二版本代码中与待测代码的相似度大于第二相似度阈值的第二版本代码确定为第二目标版本代码。
可选的,上述第一相似度阈值可以大于第二相似度阈值,也可以小于或等于第二相似度阈值,本申请实施例中不做限定,具体的取值可以根据实际检测需求进行选择。
可选的,上述第二相似度阈值也可以为0。
在确定出第一目标版本代码与第二目标版本代码之后,在本申请一种可行的实施方式中,可以将上述第一目标版本代码与第二目标版本代码同时确定为与待测代码相似的版本代码。
本申请实施例所提供的组件代码相似度的检测方法,在检测组件代码与待测代码的相似度时,先分别获取各个组件对应的部分版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件对应的部分版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件对应的部分版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码。即本申请中在检测组件代码与待测代码的相似度时,不需要获取各个组件对应的所有版本的版本代码来逐个与待测代码进行相似度匹配,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。
基于上述实施例中所描述的内容,在一种可行的实施方式中,在获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别在各个组件对应的所有版本中随机选取一个版本确定为各个组件对应的目标版本。
即本申请实施例中,可以先在各个组件对应的所有版本中随机选取一个版本,然后获取各个组件所选取的版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件所选取的版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件所选取的版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码。
在另一种可行的实施方式中,在获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别将各个组件对应的所有版本中预先指定的一个版本确定为各个组件对应的目标版本。
可选的,本实施例中,可以根据用户的触发的指令,将各个组件中用户所选择的版本作为各个组件对应的所有版本中预先指定的一个版本。
即本申请实施例中,可以先获取各个组件所指定的版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件所指定的版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件所指定的版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码。
本申请实施例所提供的组件代码相似度的检测方法,在检测组件代码与待测代码的相似度时,不需要获取各个组件对应的所有版本的版本代码来逐个与待测代码进行相似度匹配,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。
基于上述实施例中所描述的内容,为了更好的理解本申请实施例,参照图3,图3为本申请实施例中提供的另一种检测组件代码相似度的流程示意图,在一种可行的实施方式中,该方法包括:
Step1:内存动态加载组件库中各个组件对应的目标版本的第一版本代码,例如,分别加载每个组件的中间版本的版本代码。
Step2:(第一检测阶段)将待测代码与各个组件对应的目标版本的版本代码进行相似度匹配,输出与待测代码相似的第一目标版本代码。
Step3:内存动态加载第一目标版本代码对应的组件中除上述目标版本之外剩余版本的第二版本代码。
Step4:(第二检测阶段)将待测代码与上述各个第二版本代码进行相似度匹配,输出与待测代码相似的第二目标版本代码。
Step5:合并Step2中的第一目标版本代码与Step4中的第二目标版本代码,输出与待测代码相似的版本代码。
即本申请实施例中,将检测过程分为了两个检测阶段,通过第一检测阶段可以有效的缩小组件版本的检测数量,提高检测效率,之后再通过第二检测阶段,可以弥补第一检测阶段的漏检情况,最后结合两个检测阶段的检测结果,即可得到组件代码相似度的检测结果。
基于上述实施例中所描述的内容,本申请实施例中还提供一种组件代码相似度的检测装置,参照图4,图4为本申请实施例中提供的一种组件代码相似度的检测装置的模块示意图,在一种可行的实施方式中,该装置包括:
获取模块401,用于获取组件库中各个组件对应的目标版本的第一版本代码。
检测模块402,用于检测获取到的各个第一版本代码中是否存在与待测代码相似的第一目标版本代码。
获取模块401,还用于当存在第一目标版本代码时,获取第一目标版本代码对应的组件中除所述目标版本之外剩余版本的第二版本代码。
检测模块402,还用于在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,并根据所述第一目标版本代码与所述第二目标版本代码确定与所述待测代码相似的版本代码。
本申请实施例所提供的组件代码相似度的检测装置,在检测组件代码与待测代码的相似度时,先分别获取各个组件对应的部分版本的版本代码来与待测代码进行相似度匹配,若其中某一个组件对应的部分版本的版本代码与待测代码相似,则获取该组件对应的剩余版本的版本代码来与待测代码进行相似度匹配,从而检测出该组件对应的所有版本的版本代码中与待测代码相似的版本代码;若其中某一个组件对应的部分版本的版本代码与待测代码不相似,则不需要再获取该组件对应的剩余版本的版本代码。即本申请中在检测组件代码与待测代码的相似度时,不需要获取各个组件对应的所有版本的版本代码来逐个与待测代码进行相似度匹配,由此可以降低检测过程中的组件代码数量,缩短检测过程所需的时间。
在一种可行的实施方式中,上述组件库中的各个组件均包括多个版本,上述装置还包括:
确定模块,用于分别在所述各个组件对应的所有版本中随机选取一个版本确定为所述各个组件对应的目标版本。
在另一种可行的实施方式中,上述确定模块用于分别将所述各个组件对应的所有版本中预先指定的一个版本确定为所述各个组件对应的目标版本。
可选的,可选的,检测模块具体用于:分别检测各个所述第一版本代码与所述待测代码的相似度,将各个所述第一版本代码中与所述待测代码的相似度大于第一相似度阈值的第一版本代码确定为所述第一目标版本代码。
可选的,检测模块具体用于:分别检测各个所述第二版本代码与所述待测代码的相似度,将各个所述第二版本代码中与所述待测代码的相似度大于第二相似度阈值的第二版本代码确定为所述第二目标版本代码。
需要说明的是,本申请实施例中获取模块401、检测模块402具体执行的内容可以参阅图2或图3所示方法实施例中相关内容,此处不再赘述。
进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种电子设备,该电子设备包括至少一个处理器和存储器;其中,存储器存储计算机执行指令;上述至少一个处理器执行存储器存储的计算机执行指令,以实现如上述实施例中所描述的组件代码相似度的检测方法的各个步骤,本实施例此处不再赘述。
为了更好的理解本申请实施例,参照图5,图5为本申请实施例提供的一种电子设备的硬件结构示意图。
如图5所示,本实施例的电子设备50包括:处理器501以及存储器502;其中:
存储器502,用于存储计算机执行指令;
处理器501,用于执行存储器存储的计算机执行指令,以实现上述实施例中所描述的组件代码相似度的检测方法的各个步骤,本实施例此处不再赘述。
可选地,存储器502既可以是独立的,也可以跟处理器501集成在一起。
当存储器502独立设置时,该设备还包括总线503,用于连接所述存储器502和处理器501。
进一步的,基于上述实施例中所描述的内容,本申请实施例中还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,以实现如上述实施例中所描述的组件代码相似度的检测方法的各个步骤,本实施例此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种组件代码相似度的检测方法,其特征在于,所述方法包括:
获取组件库中各个组件对应的目标版本的第一版本代码;
检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码;
当存在所述第一目标版本代码时,获取所述第一目标版本代码对应的组件中除所述目标版本之外剩余版本的第二版本代码;
在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,并根据所述第一目标版本代码与所述第二目标版本代码确定与所述待测代码相似的版本代码。
2.根据权利要求1所述的方法,其特征在于,所述组件库中的各个组件均包括多个版本,所述获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别在所述各个组件对应的所有版本中随机选取一个版本确定为所述各个组件对应的目标版本。
3.根据权利要求1所述的方法,其特征在于,所述组件库中的各个组件均包括多个版本,所述获取组件库中各个组件对应的目标版本的第一版本代码之前,还包括:
分别将所述各个组件对应的所有版本中预先指定的一个版本确定为所述各个组件对应的目标版本。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码,包括:
分别检测各个所述第一版本代码与所述待测代码的相似度,将各个所述第一版本代码中与所述待测代码的相似度大于第一相似度阈值的第一版本代码确定为所述第一目标版本代码。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,包括:
分别检测各个所述第二版本代码与所述待测代码的相似度,将各个所述第二版本代码中与所述待测代码的相似度大于第二相似度阈值的第二版本代码确定为所述第二目标版本代码。
6.一种组件代码相似度的检测装置,其特征在于,所述装置包括:
获取模块,用于获取组件库中各个组件对应的目标版本的第一版本代码;
检测模块,用于检测获取到的各个所述第一版本代码中是否存在与待测代码相似的第一目标版本代码;
所述获取模块,还用于当存在所述第一目标版本代码时,获取所述第一目标版本代码对应的组件中除所述目标版本之外剩余版本的第二版本代码;
所述检测模块,还用于在获取到的各个所述第二版本代码中检测与所述待测代码相似的第二目标版本代码,并根据所述第一目标版本代码与所述第二目标版本代码确定与所述待测代码相似的版本代码。
7.根据权利要求6所述的装置,其特征在于,所述组件库中的各个组件均包括多个版本,所述装置还包括:
确定模块,用于分别在所述各个组件对应的所有版本中随机选取一个版本确定为所述各个组件对应的目标版本。
8.根据权利要求6所述的装置,其特征在于,所述组件库中的各个组件均包括多个版本,所述装置还包括:
确定模块,用于分别将所述各个组件对应的所有版本中预先指定的一个版本确定为所述各个组件对应的目标版本。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至5任一项所述的组件代码相似度的检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至5任一项所述的组件代码相似度的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424824.3A CN112214419A (zh) | 2020-12-09 | 2020-12-09 | 组件代码相似度的检测方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424824.3A CN112214419A (zh) | 2020-12-09 | 2020-12-09 | 组件代码相似度的检测方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112214419A true CN112214419A (zh) | 2021-01-12 |
Family
ID=74068161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011424824.3A Pending CN112214419A (zh) | 2020-12-09 | 2020-12-09 | 组件代码相似度的检测方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214419A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
US20140331202A1 (en) * | 2011-12-12 | 2014-11-06 | Hitachi, Ltd. | Software Analysis Program and Software Analysis System |
CN105069169A (zh) * | 2015-08-31 | 2015-11-18 | 国家计算机网络与信息安全管理中心 | 一种网站镜像的检测方法及装置 |
US20190004790A1 (en) * | 2017-06-29 | 2019-01-03 | Red Hat, Inc. | Measuring similarity of software components |
CN110442847A (zh) * | 2019-07-26 | 2019-11-12 | 南京邮电大学 | 基于代码仓库过程管理的代码相似性检测方法及装置 |
CN111124487A (zh) * | 2018-11-01 | 2020-05-08 | 浙江大学 | 代码克隆检测方法、装置以及电子设备 |
-
2020
- 2020-12-09 CN CN202011424824.3A patent/CN112214419A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
US20140331202A1 (en) * | 2011-12-12 | 2014-11-06 | Hitachi, Ltd. | Software Analysis Program and Software Analysis System |
CN105069169A (zh) * | 2015-08-31 | 2015-11-18 | 国家计算机网络与信息安全管理中心 | 一种网站镜像的检测方法及装置 |
US20190004790A1 (en) * | 2017-06-29 | 2019-01-03 | Red Hat, Inc. | Measuring similarity of software components |
CN111124487A (zh) * | 2018-11-01 | 2020-05-08 | 浙江大学 | 代码克隆检测方法、装置以及电子设备 |
CN110442847A (zh) * | 2019-07-26 | 2019-11-12 | 南京邮电大学 | 基于代码仓库过程管理的代码相似性检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
程金宏 等: "程序代码相似度自动度量技术研究综述", 《内蒙古师范大学学报(自然科学汉文版)》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769504B2 (en) | Method and apparatus for dynamically instrumenting a program | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN108776595B (zh) | 一种gpu服务器的显卡的识别方法、装置、设备及介质 | |
US20060265581A1 (en) | Method for switching booting devices of a computer | |
CN114676040A (zh) | 一种测试覆盖率验证方法、装置及存储介质 | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
CN112181430B (zh) | 代码变更统计方法、装置、电子设备及存储介质 | |
US8122293B2 (en) | Method for automatically simulating manual testing of a computer, and testing system for performing the method | |
CN115756984A (zh) | 内存测试方法、装置、设备及存储介质 | |
CN112395144A (zh) | 一种测试方法、系统、终端设备及可读存储介质 | |
CN112133357A (zh) | 一种eMMC的测试方法及装置 | |
CN108197955B (zh) | 终端验证的方法、终端设备及计算机可读存储介质 | |
CN108229975B (zh) | 终端验证的方法、终端设备及计算机可读存储介质 | |
CN110990202A (zh) | 识别Android模拟器的方法及相关设备 | |
CN101017496A (zh) | 基于最佳匹配测试结果类型自动格式化数据的方法和装置 | |
CN111176917B (zh) | 一种cpu sst-bf功能稳定性测试方法、系统、终端及存储介质 | |
CN109558319B (zh) | Web页面控件的测试方法、设备和存储介质 | |
CN112214419A (zh) | 组件代码相似度的检测方法及设备 | |
CN115113943B (zh) | 板卡与槽位匹配度的确定方法、装置、设备和存储介质 | |
US20120054548A1 (en) | Data processing device and method for controlling test process of electronic device using the same | |
CN110609988A (zh) | 表单校验的方法及设备 | |
CN110442119B (zh) | Ecu针脚重复配置检测方法及设备 | |
CN114328283A (zh) | 计数地址获取方法、计数方法、装置、设备及存储介质 | |
CN112597503A (zh) | 一种基于中断向量的固件检测方法与装置 | |
CN114648656A (zh) | 图像识别方法、装置、终端设备及可读存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210112 |
|
RJ01 | Rejection of invention patent application after publication |