CN112698861A - 源代码克隆识别方法及系统 - Google Patents

源代码克隆识别方法及系统 Download PDF

Info

Publication number
CN112698861A
CN112698861A CN202110317456.0A CN202110317456A CN112698861A CN 112698861 A CN112698861 A CN 112698861A CN 202110317456 A CN202110317456 A CN 202110317456A CN 112698861 A CN112698861 A CN 112698861A
Authority
CN
China
Prior art keywords
source code
file
directory
stored
character strings
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
Application number
CN202110317456.0A
Other languages
English (en)
Inventor
汪杰
万振华
王颉
董燕
李华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Original Assignee
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Kaiyuan Internet Security Technology Co Ltd filed Critical Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority to CN202110317456.0A priority Critical patent/CN112698861A/zh
Publication of CN112698861A publication Critical patent/CN112698861A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种源代码克隆识别方法及系统,该方法包括:首先,收集源码文件,生成源码库;其次,采用降维算法分别对源码库中的每一源码文件进行处理,以生成若干第一字符串;然后,采用降维算法对目标代码文件进行处理,以生成第二字符串;接着,将第二字符串分别与若干第一字符串进行匹配分析,获得匹配度最高的N个第一字符串;最后,对目标代码文件与上N个第一字符串所对应的源码文件中的代码进行比对;通过上述源代码克隆识别方法,可从海量源码库中快速筛选出相似度比较高的N个开源源码文件,然后只需针对这N个开源的源码文件逐个进行代码比对即可,从而不但可从代码层面上识别检测克隆代码,识别精准度高,而且还有效提高了检测效率。

Description

源代码克隆识别方法及系统
技术领域
本发明涉及软件代码克隆识别技术领域,尤其涉及一种源代码克隆识别方法及系统。
背景技术
在软件开发过程中,为加快开发进度和成本,软件工程师会经常用到一些开源软件,直接或通过一些简单加工将之克隆到当前开发项目中。然而由于开源成分的引入,免不了会引入一些漏洞,因此,当项目开发完成后,需要对项目中的开源成分进行分析,就是分析项目中引用的开源成分,包括使用的开源组件或者拷贝的部分开源代码。目前已经有很多SCA工具(软件组合分析工具)已经可以支持开源成分的分析,但是这些工具大都是基于项目的特征文件来分析项目的开源成分,也就是分析项目中使用到的开源组件,而基于代码的开源成分分析则很少,主要是因为基于海量的开源代码进行开源成分的分析难度很大,检测效率很难达到理想效果。
发明内容
本发明的目的是为解决上述技术问题而提供一种源代码克隆识别方法及系统,以从代码层面上进行开源成分分析,进而完成代码克隆的检测,且具有理想的检测效率。
为了实现上述目的,本发明公开了一种源代码克隆识别方法,其包括:
收集并存储源码文件,以生成源码库;
采用降维算法分别对所述源码库中的每一所述源码文件进行分析处理,以生成若干分别与每一所述源码文件对应的包括若干位字节的第一字符串;
采用降维算法对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串;
将所述第二字符串分别与若干所述第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个所述第一字符串,N≥1;
对所述目标代码文件与上述匹配度最高的N个所述第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
与现有技术相比,本发明源代码克隆识别方法,采用降维算法对源码库中的源码文件进行处理,以得到代表源码文件信息的第一字符串,将处理得到的这些第一字符串存储在数据库中,当对目标代码文件进行检测时,同样地,采用降维算法对该目标代码文件进行处理,得到第二字符串,然后,将第二字符串分别与若干第一字符串进行匹配分析,按照匹配度的高低,根据需求,找出若干作为重点检测目标的第一字符串,然后将目标代码文件分别与这些找出的第一字符串对应的源码文件进行代码的逐行比对,并根据预设敏感度输出比对结果;由此可知,通过上述源代码克隆识别方法,可从海量源码库中快速筛选出相似度比较高的N个开源源码文件,然后只需针对这N个开源的源码文件逐个进行代码比对即可,从而不但可从代码层面上识别检测克隆代码,识别精准度高,而且还有效提高了检测效率。
较佳地,所述降维算法包括局部敏感哈希算法。
较佳地,源码库中所述源码文件的存储方法包括:
将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下;
在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录,所述文件存储目录中还具有一记录文件,所述记录文件用于记录存储在该文件存储目录下的所述源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息;
检测当前所要存储的所述源码文件在当前所述类目录下是否已存储,如果是,放弃存储当前所要存储的所述源码文件,并在已存储的所述源码文件所对应的所述记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
较佳地,采用哈希码作为每一所述文件存储目录的文件名。
较佳地,采用降维算法对源码库中所述源码文件进行分析处理的方法包括;
将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下;
在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录,并在新建立的所述文件存储目录中生成一更新文件,所述更新文件中具有文件更新标志;
实时检测所述源码库中任一所述文件存储目录下是否存在所述更新文件,如果是,采用降维算法对当前所述更新文件所在类目录下的所有所述源码文件进行分析处理,并消除当前所述更新文件。
本发明还公开一种源代码克隆识别系统,包括源码库建立单元、分析处理单元、第一比对单元和第二比对单元;
所述源码库建立单元,用于收集并存储源码文件,以生成源码库;
所述分析处理单元,用于采用降维算法分别对所述源码库中的每一所述源码文件进行分析处理,以生成若干分别与每一所述源码文件对应的包括若干位字节的第一字符串,且用于对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串;
所述第一比对单元,用于将所述第二字符串分别与若干所述第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个所述第一字符串,N≥1;
所述第二比对单元,用于对所述目标代码文件与所述第一比对单元得到的N个所述第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
较佳地,所述源码库建立单元还包括存储管理模块、记录文件生成模块和第一检测模块;
所述存储管理模块,用于将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下,并在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录;
所述记录文件生成模块,用于在所述文件存储目录中生成一记录文件,所述记录文件用于记录存储在该文件存储目录下的所述源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息;
所述第一检测模块,用于检测当前所要存储的所述源码文件在当前所述类目录下是否已存储;
当所述第一检测模块检测到当前所要存储的所述源码文件已有存储时,所述存储管理模块放弃存储当前所要存储的所述源码文件,并在已存储的所述源码文件所对应的所述记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
较佳地,还包括对所述源码库中的源码文件进行更新处理的更新单元,所述更新单元包括存储管理模块、更新管理模块和第二检测模块;
所述存储管理模块,用于将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下,并在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录;
所述更新管理模块,用于在新建立的所述文件存储目录中生成一更新文件,所述更新文件中具有文件更新标志,当所述更新文件所在的所述文件存储目录中的源码文件被所述分析处理单元处理后,所述更新管理模块消除所述更新文件;
所述第二检测模块,用于实时检测所述源码库中任一所述文件存储目录下是否存在所述更新文件;
当所述第二检测模块检测到所述源码库中产生所述更新文件时,所述分析处理单元对当前所述更新文件所在文件存储目录下的所述源码文件进行分析处理。
本发明还公开另一种源代码克隆识别系统,包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上所述的源代码克隆识别方法的指令。
另外,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成如上所述的源代码克隆识别方法。
附图说明
图1为本发明实施例中源代码克隆识别方法的流程示意图。
图2为本发明实施例中源码库的建立流程示意图。
图3为本发明实施例中对源码库中的源码文件进行分析处理的流程示意图。
图4为本发明实施例中源码库的存储结构示意图。
图5为本发明实施例中源代码克隆识别系统的原理结构示意图。
图6为本发明实施例中源码库建立单元的系统结构示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
为做到快速、精准对软件开发项目中的开源成分进行识别检测,本实施例公开了一种源代码克隆识别方法,如图1所示,其包括如下步骤:
S1:收集源码文件,并分类存储所收集到的源码文件,以生成源码库。本实施例中,不限制收集源码文件的具体方式,如可从已完成的软件项目中收集,或利用源码信息实时收集装置(如爬虫工具)从一些开源社区获取。
S2:采用降维算法分别对源码库中的每一源码文件进行分析处理,以生成若干分别与每一源码文件对应的包括若干位字节的第一字符串,也即,通过降维算法对源码文件进行降维简化处理,以得到与源码文件中的内容信息相对应的第一字符串,将这些第一字符串存储在数据库中以供下面步骤使用。
S3:采用降维算法对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串。该目标代码文件,也即当前所要进行识别检测的代码文件,同样地,通过降维算法对其进行降维简化处理,得到与之文件信息对应的第二字符串。
S4:将第二字符串分别与若干第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个第一字符串,N≥1。如,需要获得十个进行重点比对的源码文件,那么N取10,匹配分析时,根据匹配度从高到低,输出前十个第一字符串。
S5:对目标代码文件与上述步骤S4中获得的匹配度最高的N个第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
在上述实施例中,比对识别过程分为两个阶段,第一阶段是找出与目标代码文件相识度高的N个源码文件,在该阶段,不涉及具体代码的比对,仅根据生成的代表目标代码文件的第二字符串与数据库中代表源码文件的各个第一字符串进行比较,快速找出相似度高的N个第二字符串,找出的这N个第二字符串所对应的源码文件即为下一个阶段所要重点比对的目标对象。第二阶段,也即是代码比对阶段,在这个阶段,将目标代码文件与第一个阶段找出的N个源码文件分别进行代码的逐行比对,然后根据预设敏感度输出比对结果,这里的预设敏感度指的是代码重合程度,也即有多少行代码相同满足输出的条件,如可设置有M行代码相同即可输出。通过上述源代码克隆识别方法,可从海量源码库中快速筛选出相似度比较高的N个开源源码文件,然后只需针对这N个开源的源码文件逐个进行代码比对即可,从而不但可从代码层面上识别检测克隆代码,识别精准度高,而且还有效提高了检测效率。
具体地,对于上述实施例中的降维算法,优选为局部敏感哈希算法,但并不以此为限。对于局部敏感哈希算法的具体运算方式为本领域技术人员的公知常识,在此不再赘述。本实施例中,采用局部敏感哈希算法对源码文件进行处理时,得到的第一字符串包括有64位字节,当然,也可为16位或8位。对第一字符串和第二字符串进行匹配时,根据汉明距离计算相识度。
在收集源码文件时,一般是以开源项目为主题进行收集,每一开源项目下包含有若干源码文件,而对于任一开源项目来说,随着开发升级,一般都具有若干版本,完善源码库的过程中,这些不同版本的开源项目都会被收集存储,为便于查询和管理,并有利于节约存储空间。本实施例中的源码库中源码文件的存储方法包括:
将属于同一类的不同版本代码所对应的源码文件存储在同一类目录下。也即,将属于同一开源项目的不同版本代码所对应的源码文件存储在同一文件夹下,如文件夹Y。在类目录下,为每一所要存储的源码文件建立一文件存储目录,假定该文件存储目录为文件夹A,文件夹A为文件夹Y的子文件夹,文件存储目录中还具有一记录文件,记录文件用于记录存储在该文件存储目录下的源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息。存储源码文件时,如图2,S10:首先检测当前所要存储的源码文件在当前类目录下是否已存储,如果是,执行S11和S13:放弃存储当前所要存储的源码文件,并在已存储的源码文件所对应的记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。如果否,执行S12:那么在该类目录下为该源码文件建立文件存储目录,将该源码文件存储在该新建立的文件存储目录中,并在文件存储目录中生成记录文件。
下面以一具体实例说明上述存储方法的具体存储过程:比如某个开源项目opensource,具有两个版本代码,分别为1.0版本和2.0版本,1.0版本下对应有四个源码文件,分别为文件a,文件b,文件c,文件d,2.0版本下对应有两个源码文件,分别为文件a和文件e,1.0版本和2.0版本具有相同的文件a。存储源码文件时,如图4,按照版本顺序从1.0版本开始存,将1.0版本对应的四个源码文件均存储在开源项目opensource所对应的类目录文件夹Y中,在文件夹Y中分别为每一源码文件建立一文件存储目录,即在文件夹Y中建立四个子文件夹,分别为文件夹A、文件夹B、文件夹C、文件夹D,将文件a存储在文件夹A中,将文件b存储在文件夹B中,将文件c存储在文件夹C中、将文件d存储在文件夹D中,同时,分别在文件夹A、文件夹B、文件夹C、文件夹D中生成一记录文件。当存储2.0版本的源码文件时,由于文件a已经存储,那么无须再次存储文件a,只需对位于文件夹A中的记录文件进行更新,在该记录文件中添加与2.0版本对应的版本号和路径信息,然后在文件夹A中为文件e建立文件存储目录文件夹E,将文件e存储在文件夹E中,同时在文件夹E中生成对应的记录文件。
采用上述存储方法存储源码文件,可避免对不同版本代码中相同源码文件的重复存储,节约存储资源。
另外需要注意的是,在存储不同版本的源码文件时,如果源码文件名称相同,但是其中代码内容有修改,也作为两个不同的源码文件对待,因此,为了便于查询,在存储源码文件时,采用哈希码作为每一文件存储目录的文件名。
由于源码库中的源码文件是持续更新的,因此,需要通过降维算法不断对源码库进行更新处理,为避免对源码库中的源码文件进行重复分析处理,进一步改进:存储源码文件时,在新建立的文件存储目录中生成一更新文件,更新文件中具有文件更新标志。在源码库生命周期内,采用降维算法对源码库中源码文件进行分析处理的方法为:如图3,S20:实时检测源码库中任一文件存储目录下是否存在更新文件,如果是,S21:采用降维算法对当前更新文件所在类目录下的所有源码文件进行分析处理,并消除当前更新文件,如果否,S22:说明该文件存储目录下的源码文件已被处理,跳过即可。
在本实施例中,当某一开源项目下的源码文件有更新时,会新建一文件存储目录,并在其中产生一更新文件,当检测到该更新文件时,即对该更新文件所在目录的源码文件进行降维处理,而对其他文件存储目录下的源码文件不作处理,从而有效降低系统负担。
另外,为方便用户查看比对结果,还可通过一显示装置展示出代码比对结果,其次,还可对展示出的相同的代码行以高亮标识;再者,还可在显示装置上显示参数设置项,以方便用户设置检测参数,如上述N的设置,以及代码比对敏感度的设置。
本发明还公开一种源代码克隆识别系统,如图5,其包括源码库建立单元10、分析处理单元11、第一比对单元12和第二比对单元13。
源码库建立单元10,用于分类存储所收集到的源码文件,以生成源码库。
分析处理单元11,用于采用降维算法分别对源码库中的每一源码文件进行分析处理,以生成若干分别与每一源码文件对应的包括若干位字节的第一字符串,且用于对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串。
第一比对单元12,用于将第二字符串分别与若干第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个第一字符串,N≥1。
第二比对单元13,用于对目标代码文件与第一比对单元12得到的N个第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
进一步地,请参阅图5和图6,源码库建立单元10还包括存储管理模块14、记录文件生成模块15和第一检测模块16。
存储管理模块14,用于将属于同一类的不同版本代码所对应的源码文件存储在同一类目录下,并在类目录下,为每一所要存储的源码文件建立一文件存储目录。
记录文件生成模块15,用于在文件存储目录中生成一记录文件,记录文件用于记录存储在该文件存储目录下的源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息。
第一检测模块16,用于检测当前所要存储的源码文件在当前类目录下是否已存储;
当第一检测模块16检测到当前所要存储的源码文件已有存储时,存储管理模块14放弃存储当前所要存储的源码文件,并在已存储的源码文件所对应的记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
更进一步地,请再次参阅图5和图6,源码库建立单元10还包括对源码库中的源码文件进行更新处理的更新单元19,更新单元19包括更新管理模块17和第二检测模块18。
更新管理模块17,用于在新建立的文件存储目录中生成一更新文件,更新文件中具有文件更新标志,当更新文件所在的文件存储目录中的源码文件被分析处理单元11处理后,更新管理模块17消除该更新文件。
第二检测模块18,用于实时检测源码库中任一文件存储目录下是否存在更新文件。当第二检测模块18检测到源码库中产生更新文件时,分析处理单元11对当前更新文件所在文件存储目录下的源码文件进行分析处理。
对于上述源代码克隆识别系统的工作方式和原理,详见上述源代码克隆识别方法,在此不再赘述。
本发明还公开另一种源代码克隆识别系统,包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上所述的源代码克隆识别方法的指令。
另外,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成如上所述的源代码克隆识别方法。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

Claims (10)

1.一种源代码克隆识别方法,其特征在于,包括:
收集并存储源码文件,以生成源码库;
采用降维算法分别对所述源码库中的每一所述源码文件进行分析处理,以生成若干分别与每一所述源码文件对应的包括若干位字节的第一字符串;
采用降维算法对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串;
将所述第二字符串分别与若干所述第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个所述第一字符串,N≥1;
对所述目标代码文件与上述匹配度最高的N个所述第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
2.根据权利要求1所述的源代码克隆识别方法,其特征在于,所述降维算法包括局部敏感哈希算法。
3.根据权利要求1所述的源代码克隆识别方法,其特征在于,源码库中所述源码文件的存储方法包括:
将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下;
在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录,所述文件存储目录中还具有一记录文件,所述记录文件用于记录存储在该文件存储目录下的所述源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息;
检测当前所要存储的所述源码文件在当前所述类目录下是否已存储,如果是,放弃存储当前所要存储的所述源码文件,并在已存储的所述源码文件所对应的所述记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
4.根据权利要求3所述的源代码克隆识别方法,其特征在于,采用哈希码作为每一所述文件存储目录的文件名。
5.根据权利要求1所述的源代码克隆识别方法,其特征在于,采用降维算法对源码库中所述源码文件进行分析处理的方法包括;
将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下;
在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录,并在新建立的所述文件存储目录中生成一更新文件,所述更新文件中具有文件更新标志;
实时检测所述源码库中任一所述文件存储目录下是否存在所述更新文件,如果是,采用降维算法对当前所述更新文件所在类目录下的所有所述源码文件进行分析处理,并消除当前所述更新文件。
6.一种源代码克隆识别系统,其特征在于,包括源码库建立单元、分析处理单元、第一比对单元和第二比对单元;
所述源码库建立单元,用于收集并存储源码文件,以生成源码库;
所述分析处理单元,用于采用降维算法分别对所述源码库中的每一所述源码文件进行分析处理,以生成若干分别与每一所述源码文件对应的包括若干位字节的第一字符串,且用于对目标代码文件进行分析处理,以生成与之对应的包括若干位字节的第二字符串;
所述第一比对单元,用于将所述第二字符串分别与若干所述第一字符串进行匹配分析,根据预设要求,获得匹配度最高的N个所述第一字符串,N≥1;
所述第二比对单元,用于对所述目标代码文件与所述第一比对单元得到的N个所述第一字符串所对应的源码文件中的代码进行比对,并根据预设敏感度输出比对结果。
7.根据权利要求6所述的源代码克隆识别系统,其特征在于,所述源码库建立单元还包括存储管理模块、记录文件生成模块和第一检测模块;
所述存储管理模块,用于将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下,并在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录;
所述记录文件生成模块,用于在所述文件存储目录中生成一记录文件,所述记录文件用于记录存储在该文件存储目录下的所述源码文件与其所属的类目录下所有版本代码所对应的版本号和路径信息;
所述第一检测模块,用于检测当前所要存储的所述源码文件在当前所述类目录下是否已存储;
当所述第一检测模块检测到当前所要存储的所述源码文件已有存储时,所述存储管理模块放弃存储当前所要存储的所述源码文件,并在已存储的所述源码文件所对应的所述记录文件中添加与当前所要存储的源码文件所对应的版本号和路径信息。
8.根据权利要求6所述的源代码克隆识别系统,其特征在于,还包括对所述源码库中的源码文件进行更新处理的更新单元,所述更新单元包括存储管理模块、更新管理模块和第二检测模块;
所述存储管理模块,用于将属于同一类的不同版本代码所对应的所述源码文件存储在同一类目录下,并在所述类目录下,为每一所要存储的所述源码文件建立一文件存储目录;
所述更新管理模块,用于在新建立的所述文件存储目录中生成一更新文件,所述更新文件中具有文件更新标志,当所述更新文件所在的所述文件存储目录中的源码文件被所述分析处理单元处理后,所述更新管理模块消除所述更新文件;
所述第二检测模块,用于实时检测所述源码库中任一所述文件存储目录下是否存在所述更新文件;
当所述第二检测模块检测到所述源码库中产生所述更新文件时,所述分析处理单元对当前所述更新文件所在文件存储目录下的所述源码文件进行分析处理。
9.一种源代码克隆识别系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1至5任一项所述的源代码克隆识别方法的指令。
10.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至5任一项所述的源代码克隆识别方法。
CN202110317456.0A 2021-03-25 2021-03-25 源代码克隆识别方法及系统 Pending CN112698861A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110317456.0A CN112698861A (zh) 2021-03-25 2021-03-25 源代码克隆识别方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110317456.0A CN112698861A (zh) 2021-03-25 2021-03-25 源代码克隆识别方法及系统

Publications (1)

Publication Number Publication Date
CN112698861A true CN112698861A (zh) 2021-04-23

Family

ID=75515784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110317456.0A Pending CN112698861A (zh) 2021-03-25 2021-03-25 源代码克隆识别方法及系统

Country Status (1)

Country Link
CN (1) CN112698861A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721978A (zh) * 2021-11-02 2021-11-30 北京大学 一种混源软件中开源成分检测的方法和系统
CN116166321A (zh) * 2023-04-26 2023-05-26 浙江鹏信信息科技股份有限公司 代码克隆检测方法、系统及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108171264A (zh) * 2017-12-26 2018-06-15 北京非斗数据科技发展有限公司 一种利用深度学习结合哈希编码对图片侵权内容的提取识别技术
CN110955758A (zh) * 2019-12-18 2020-04-03 中国电子技术标准化研究院 代码检测方法、代码检测服务器及索引服务器
CN111290784A (zh) * 2020-01-21 2020-06-16 北京航空航天大学 适用于大规模样本的程序源代码相似度检测方法
JP2020119216A (ja) * 2019-01-23 2020-08-06 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108171264A (zh) * 2017-12-26 2018-06-15 北京非斗数据科技发展有限公司 一种利用深度学习结合哈希编码对图片侵权内容的提取识别技术
JP2020119216A (ja) * 2019-01-23 2020-08-06 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置
CN110955758A (zh) * 2019-12-18 2020-04-03 中国电子技术标准化研究院 代码检测方法、代码检测服务器及索引服务器
CN111290784A (zh) * 2020-01-21 2020-06-16 北京航空航天大学 适用于大规模样本的程序源代码相似度检测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113721978A (zh) * 2021-11-02 2021-11-30 北京大学 一种混源软件中开源成分检测的方法和系统
CN116166321A (zh) * 2023-04-26 2023-05-26 浙江鹏信信息科技股份有限公司 代码克隆检测方法、系统及计算机可读存储介质
CN116166321B (zh) * 2023-04-26 2023-06-27 浙江鹏信信息科技股份有限公司 代码克隆检测方法、系统及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN111400724B (zh) 基于代码相似性分析的操作系统脆弱性检测方法、系统及介质
US10394694B2 (en) Unexplored branch search in hybrid fuzz testing of software binaries
Alrubaye et al. On the use of information retrieval to automate the detection of third-party java library migration at the method level
CN107608732B (zh) 一种基于bug知识图谱的bug搜索定位方法
CN112698861A (zh) 源代码克隆识别方法及系统
CN111258614B (zh) 项目第三方库升级异常检测方法及系统、设备及存储介质
CN112328499A (zh) 一种测试数据生成方法、装置、设备及介质
CN111767350A (zh) 数据仓库测试方法、装置、终端设备及存储介质
CN108399125B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN116108446A (zh) 基于深度学习的漏洞补丁存在性检测方法
CN110196952B (zh) 程序代码的搜索处理方法、装置、设备及存储介质
Arutunian et al. A method to evaluate binary code comparison tools
CN111190906A (zh) 一种传感网数据异常检测方法
CN114816518A (zh) 基于simhash的源代码中开源成分筛选识别方法及系统
CN114924790A (zh) 基于源码分析的开源成分检测方法及系统
CN114756586A (zh) 代码匹配分析方法、装置、电子设备及存储介质
CN112115125B (zh) 数据库访问对象名称解析方法、装置及电子设备
CN114201759A (zh) 一种基于软件包命名矩阵的软件漏洞识别方法与系统
CN112948478A (zh) 基于链路的代码分析方法、装置、电子设备及存储介质
CN113312054A (zh) 针对嵌入式软件架构的软件栈消耗分析方法及分析装置
JP6955162B2 (ja) 解析装置、解析方法および解析プログラム
CN116483735B (zh) 一种代码变更的影响分析方法、装置、存储介质及设备
CN114398069B (zh) 一种基于交叉指纹分析的公共组件库精确版本识别方法及系统
CN113568662B (zh) 一种基于调用关系的代码变更影响范围分析方法及系统
CN112394984B (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: 20210423

RJ01 Rejection of invention patent application after publication