CN110989991B - 检测应用程序中源代码克隆开源软件的方法及系统 - Google Patents

检测应用程序中源代码克隆开源软件的方法及系统 Download PDF

Info

Publication number
CN110989991B
CN110989991B CN201911027570.9A CN201911027570A CN110989991B CN 110989991 B CN110989991 B CN 110989991B CN 201911027570 A CN201911027570 A CN 201911027570A CN 110989991 B CN110989991 B CN 110989991B
Authority
CN
China
Prior art keywords
code
hash
comparison
comparison object
program
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
Application number
CN201911027570.9A
Other languages
English (en)
Other versions
CN110989991A (zh
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.)
Seczone Technology Co Ltd
Original Assignee
Seczone 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 Seczone Technology Co Ltd filed Critical Seczone Technology Co Ltd
Priority to CN201911027570.9A priority Critical patent/CN110989991B/zh
Publication of CN110989991A publication Critical patent/CN110989991A/zh
Application granted granted Critical
Publication of CN110989991B publication Critical patent/CN110989991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种检测应用程序中源代码克隆开源软件的方法及系统,其中,检测方法包括代码解析处理方法和比对方法;代码解析处理方法为:构建基于token结构的解析器,采用解析器并自定义解析规则将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,token结构体的属性包括哈希码和标识符;比对方法包括:首先,通过代码解析处理方法对开源程序和当前待检测的应用程序进行处理;然后,将属于应用程序的各个比对对象按照次序与属于开源程序的比对对象进行比较;采用上述方法进行克隆开源软件的检测,能够通过配置解析规则来提高检测的准确率和精准度,另外,通过哈希码和标识符进行识别,可最大程度的减小干扰率,提高比对效率。

Description

检测应用程序中源代码克隆开源软件的方法及系统
技术领域
本发明涉及源代码风险检测技术领域,尤其涉及一种检测应用程序中源代码克隆开源软件的方法。
背景技术
一个项目在不断开发迭代、功能累加的过程中,重复代码的出现几乎是不可避免的,一方面由于开发人员偷懒,一味的复制粘贴,一方面由于新员工刚进公司,处于模仿学习的阶段,不可避免的就会重复以前的代码,如果仅仅只是公司内部代码的直接复制,风险还不是很大,但如果拷贝的是本身就有漏洞的开源软件源代码,或者拷贝的是类似GPL,APGL等具有严格要求的license(许可,一般软件为了保护权益或者版权等所发布的声明文件)的开源软件的源代码,则存在极高的风险。拷贝了本身就有漏洞的开源软件源代码,不可避免的使得项目应用的本身存在安全隐患,而且还不容易排查,因为很多人都存在觉得拷贝的是开源软件的代码就一定是安全的想法。如果拷贝了遵循GPL license的开源软件,则依据GPL license的规定,凡引用GPL license的产品,不管是原封不动的引用还是修改,不管是源代码形式或者非源码形式,都要求与之相关的应用要同样遵循GPL license开放源代码。这往往是很多商业软件不愿意做的,对商业软件来说,如果拷贝使用了这类型许可的开源软件,无疑存在着违反相关法律法规的风险。而如果拷贝了某些不允许开源拷贝的开源软件,则明显存在着侵权行为。因此,在软件开发完成后,需要对程序代码进行检测,重点检测其中是否存在克隆开源软件代码的程序段,以消除后期隐患。由于应用软件的代码量一般比较庞大,因此一般都是通过检测程序自动检测,在检测时,需要将程序代码进行分词,传统的分词方法是采用完全匹配的方案,即开源软件中要存在与应用程序中完全一样的代码段,才被认为是克隆开源软件,如果中间改了几个字符,哪怕是注释字符,就会影响匹配结果,导致匹配结果不一致,从而使得检测结果不够准确。
发明内容
本发明的目的是为解决上述技术问题的不足而提供一种可根据待检测应用程序的特点自定义检测规则检测从而提高检测精准度的应用程序中源代码克隆开源软件的方法。
本发明的另一目的是提供一种可根据待检测应用程序的特点自定义检测规则检测从而提高检测精准度的应用程序中源代码克隆开源软件的系统。
为了实现上述目的,本发明公开了一种检测应用程序中源代码克隆开源软件的方法,其包括代码解析处理方法和比对方法;
所述代码解析处理方法包括:
1.1)、构建基于token结构的解析器,采用所述解析器并自定义解析规则将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,所述token结构体的属性包括哈希码和标识符,所述标识符代表所述比对对象所属的字符类别;
所述比对方法包括:
2.1)、通过所述代码解析处理方法对开源程序和当前待检测的应用程序进行处理,并将处理后所得到的所述比对对象分别存储;
2.2)、将属于所述应用程序的各个比对对象按照次序与属于所述开源程序的比对对象进行比较,如果有连续N个相比较的所述比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数。
与现有技术相比,本发明检测应用程序中源代码克隆开源软件的方法中构建的解析器基于token结构,而token结构可以支持用户自定义,因此,在应用程序进行代码解析时,可根据应用程序的特点,自定义解析规则,比如,某应用程序使用了大量的注释语句,或者注释语句对本软件代码所起的作用不大,在自定义解析规则时,可以忽略掉这些注释语句,仅将除去注释语句外的其他语句解析为token对象;又比如,也可自定义以类的结构进行比较,只统计几个带有结构特征的字符对象,如public,private,class等,这样在后续比较后,如果连续相同的token对象,也能说明这个这两个程序文件具有相同类的结构,这种匹配的方法可以避免通过修改变量名称,增加无效语句等方法造成的无法精确匹配的情况;由此可知,采用上述方法进行克隆开源软件的检测,能够通过配置解析规则来提高检测的准确率和精准度,另外,在对比时,通过哈希码和标识符进行识别,可最大程度的减小干扰率,提高比对效率。
较佳地,在所述代码解析处理方法中,解析程序代码时,所述比对对象的哈希码通过下述公式生成:
hash=hash0*B+A,其中,hash代表当前所述比对对象的哈希码,hash0代表与当前所述比对对象相邻的上一个所述比对对象的哈希码,A代表当前所述比对对象的标识符,B代表为一奇质数的哈希常数。
较佳地,所述token结构体的属性还包括索引符,在解析程序代码时,按照所述索引符的标识顺序解析程序代码中的特征字符,且,生成当前所述比对对象的哈希码时,通过所述索引符调用上一个所述比对对象的哈希码。
较佳地,生成当前所述比对对象的哈希码时,当所述索引符大于某一设定值时,所述比对对象的哈希码通过下述公式生成:
hash=hash0*B+A-A0,其中,A0为前一所述比对对象所对应的标识符。
较佳地,所述token结构体的属性还包括行符和字符名称,所述行符代表所述比对对象在程序流中的行号,所述字符名称表示所述比对对象所属的特征字符。
较佳地,通过大规模数据收集工具自动从网络收集并下载高安全风险和高license风险的开源软件的源码文件,并采用所述代码解析处理方法对这些源码文件进行解析,将解析结果存储在比对数据库中,并不断对所述比对数据库进行实时更新。
本发明还公开一种检测应用程序中源代码克隆开源软件的系统,其包括代码解析处理系统和比对系统;
所述代码解析处理系统,包括解析器创建模块和解析模块;所述解析器创建模块用于构建基于token结构的解析器,并自定义解析规则;所述解析模块用于采用所述解析器将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,所述token结构体的属性包括哈希码和标识符,所述标识符代表所述比对对象所属的字符类别;
所述比对系统包括预处理模块和比较判断模块,所述预处理模块用于通过所述代码解析处理系统对开源程序和当前待检测的应用程序进行预处理,并将处理后所得到的所述比对对象分别存储;所述比较判断模块用于将属于所述应用程序的各个比对对象按照次序与属于所述开源程序的比对对象进行比较,如果有连续N个相比较的所述比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数。
较佳地,所述解析模块通过下述公式生成所述比对对象的哈希码;
hash=hash0*B+A,其中,hash代表当前所述比对对象的哈希码,hash0代表与当前所述比对对象相邻的上一个所述比对对象的哈希码,A代表当前所述比对对象的标识符,B代表为一奇质数的哈希常数。
较佳地,所述token结构体的属性还包括索引符,在解析程序代码时,按照所述索引符的标识顺序解析程序代码中的特征字符,且,生成当前所述比对对象的哈希码时,通过所述索引符调用上一个所述比对对象的哈希码。
较佳地,当所述索引符大于某一设定值时,所述解析模块通过通过下述公式生成所述比对对象的哈希码:
hash=hash0*B+A-A0,其中,A0为前一所述比对对象所对应的标识符。
本发明还公开一种检测应用程序中源代码克隆开源软件的系统,其包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的检测应用程序中源代码克隆开源软件的方法的指令。
本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述的检测应用程序中源代码克隆开源软件的方法。
具体实施方式
为详细说明本发明的技术内容、结构特征、实现原理及所实现目的及效果,以下结合实施方式详予说明。
本发明公开了一种检测应用程序中源代码克隆开源软件的方法,其包括代码解析处理方法和比对方法。其中,代码解析处理方法包括如下:
1.1)、构建基于token结构的解析器,采用该解析器并自定义解析规则将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,token结构体的属性包括哈希码和标识符,标识符代表比对对象所属的字符类别。上述解析器可以各种编程语言(如JAVA、C等)定义,本实施例中,是以JAVA语言定义的,在自定义解析规则时,可定义token对象包括一个分号、一个括弧、一个完整的单词等,经过解析器解析后形成的各个单独的token对象即为比对对象,即后续比对时,以解析出来的token对象为单位进行逐个比对。当解析规则被定义好后,如定义解析规则为过滤掉注释语句,在解析代码语句时,当碰到以“/**”开头,并以“*/”结尾的语句时,自动跳过,对注释语句外的其他语句的字符进行逐个分析,如下面语句:public static void main(String[]args){System.out.println(“public static.”)},第一个“public”会被认定为是第一个token对象,然后给其标识符定义一个特征值,如1,然后算出该token对象的哈希码,最后将与这个public对应的token对象存储在token数组中,接着将“static”认定为第二个token对象,给其标识符定义一个与其他token对象不同的特征值,如2,然后计算该token对象的哈希码,最后将与static对应的第二个token对象按序存储在token数组中,以此类推,将这条语句中的不同的字符(包括关键字、变量名、字符串、直接量、括弧以及语法标点等)赋予token结构属性后形成的token对象存储在token数组中。对上述语句解析完成后形成的token数组信息如下表1所示,由于哈希码比较长,用字母符号代替。
表1
在表1中,由于第一个“public”与第二个“public”的字符相同,因此在token对象中的标识符相同,但是由于二者在语句中的位置不同,因此其哈希码不同,其他类同,不再赘述。
比对方法包括如下:
2.1)、通过上述代码解析处理方法对开源程序和当前待检测的应用程序进行解析处理,并将处理后所得到的比对对象分别存储;
2.2)、将属于应用程序的各个比对对象按照次序与属于开源程序的比对对象进行比较,如果有连续N个相比较的比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数。
当要检测某一应用程序时,通过上述代码解析处理方法对应用程序和开源程序中的代码语句进行解析处理,将解析好的比对对象分别存储在应用程序数据表和开源程序数据表中,然后将应用程序数据表中的各个比对对象按序分别与开源程序数据表中的各个比对对象比对,如果在应用程序数据表中有连续N个(如25个)比对对象的哈希码和标识符都与开源程序数据表中相同,则将其判断为克隆代码。由于哈希码的码值比较大,但是重复率低,而标识符的值比较小,但是重复率比较高,因此,在比对过程中,综合考虑匹配精准度和匹配效率,可以首先比对哈希码,哈希码不同即跳到下一个,当发现哈希码相同时,仅比较下一个比对对象的标识符是否相同(无须比较哈希码),如果接下来连续25个标识符皆相同,那么就可直接定义为该段代码可克隆代码,从而加快了检测效率。
综上,本发明检测应用程序中源代码克隆开源软件的方法中构建的解析器基于token结构,而token结构可以支持用户自定义,因此,在应用程序进行代码解析时,可根据应用程序的特点,自定义解析规则,比如,某应用程序使用了大量的注释语句,或者注释语句对本软件代码所起的作用不大,在自定义解析规则时,可以忽略掉这些注释语句,仅将除去注释语句外的其他语句解析为token对象;又比如,也可自定义以类的结构进行比较,只统计几个带有结构特征的字符对象,如public,private,class等,这样在后续比较后,如果连续相同的token对象,也能说明这个这两个程序文件具有相同类的结构,这种匹配的方法可以避免通过修改变量名称,增加无效语句等方法造成的无法精确匹配的情况;因此,采用上述方法进行克隆开源软件的检测,能够通过配置解析规则来提高检测的准确率和精准度。
进一步地,在上述代码解析处理方法中,解析程序代码时,比对对象的哈希码通过下述公式生成:
hash=hash0*B+A,其中,hash代表当前比对对象的哈希码,hash0代表与当前比对对象相邻的上一个比对对象的哈希码,A代表当前比对对象的标识符,B代表为一奇质数的哈希常数。具体地,设置B为37,当计算第一个比对对象的哈希码hash1时,定义hash0为零,所以,hash1=0*37+1=1,那么,hash2=hash1*37+1=38,以此类推。通过上述公式生成的比对对象的哈希码,由于与其本身的标识符和前一个比对对象的哈希码值相关,使得每一个比对对象的哈希码的重复率大大降低,可提高精准度。
较佳地,如下表2所示,token结构体的属性还包括索引符,在解析程序代码时,按照索引符的标识顺序解析程序代码中的特征字符,且,生成当前比对对象的哈希码时,通过索引符调用上一个比对对象的哈希码,例如,当计算“main”的哈希码hash4时,“main”对应的索引符减去1即为所调用的比对对象所对应的索引符,即4-1=3,索引符3所对应的哈希码为hash3。
表2
较佳地,为进一步增加每一个比对对象的哈希值的之间的关联性,生成当前比对对象的哈希码时,当索引符大于某一设定值时时,比对对象的哈希码通过下述公式生成:
hash=hash0*B+A-A0,其中,A0为前一比对对象所对应的标识符。也就是说,当设定值为5时,从第六项开始,根据本实施例中的公式计算哈希值,通过将相邻的前一比对对象的标识符减去,来达到增加彼此比对对象之间的关联性,使得计算出的各个比对对象的哈希值在很大程度上是不同的。
当检测到有克隆代码段出现时,为便于查找克隆代码段在应用程序中的位置,较佳地,token结构体的属性还包括行符和字符名称,行符代表比对对象在程序流中的行号,字符名称表示比对对象所属的特征字符。将代码语句解析完成后,行符和字符名称会和哈希码、标识符以及索引符一起被保存,当检测到有克隆代码段出现时,直接通过比对对象上的行符和字符名称可快速查找。
另外,关于开源软件的收集,可通过大规模数据收集工具自动从网络收集并下载高安全风险和高license风险的开源软件的源码文件,并采用上述代码解析处理方法对这些源码文件进行解析,将解析结果存储在比对数据库中,并不断对比对数据库进行实时更新。本实施例中,由于开源程序代码已经预先被解析好存储在数据库中,因此,在检测应用程序的源代码时,只需对其进行解析,提高检测效率,而且,支持从众多高风险的开源软件中匹配拷贝的源代码,从而更准确的判断出当前应用是否拷贝使用了更高风险的开源软件源代码。
为便于上述检测应用程序中源代码克隆开源软件的方法的执行,本发明还公开一种检测应用程序中源代码克隆开源软件的系统,其包括代码解析处理系统和比对系统;代码解析处理系统,包括解析器创建模块和解析模块;解析器创建模块用于构建基于token结构的解析器,并自定义解析规则;解析模块用于采用解析器将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,token结构体的属性包括哈希码和标识符,标识符代表比对对象所属的字符类别;比对系统包括预处理模块和比较判断模块,预处理模块用于通过代码解析处理系统对开源程序和当前待检测的应用程序进行预处理,并将处理后所得到的比对对象分别存储;比较判断模块用于将属于应用程序的各个比对对象按照次序与属于开源程序的比对对象进行比较,如果有连续N个相比较的比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数。本实施例中的检测应用程序中源代码克隆开源软件的系统的工作原理与执行过程详见上述检测应用程序中源代码克隆开源软件的方法,在此不再赘述。
另外,本发明还公开一种检测应用程序中源代码克隆开源软件的系统包括一个或多个处理器,存储器,以及一个或多个程序,其中一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序包括用于执行如上所述的检测应用程序中源代码克隆开源软件的方法的指令。
另外,本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,计算机程序可被处理器执行以完成如上所述的检测应用程序中源代码克隆开源软件的方法。
以上所揭露的仅为本发明的较佳实例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属于本发明所涵盖的范围。

Claims (10)

1.一种检测应用程序中源代码克隆开源软件的方法,其特征在于,包括代码解析处理方法和比对方法;
所述代码解析处理方法包括:
1.1)、构建基于token结构的解析器,采用所述解析器并自定义解析规则将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,所述token结构体的属性包括哈希码和标识符,所述标识符代表所述比对对象所属的字符类别;
所述比对方法包括:
2.1)、通过所述代码解析处理方法对开源程序和当前待检测的应用程序进行处理,并将处理后所得到的所述比对对象分别存储;
2.2)、将属于所述应用程序的各个比对对象按照次序与属于所述开源程序的比对对象进行比较,如果有连续N个相比较的所述比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数;在所述代码解析处理方法中,解析程序代码时,所述比对对象的哈希码通过下述公式生成:
hash=hash0*B+A,其中,hash代表当前所述比对对象的哈希码,hash0代表与当前所述比对对象相邻的上一个所述比对对象的哈希码,A代表当前所述比对对象的标识符,B代表为一奇质数的哈希常数。
2.根据权利要求1所述的检测应用程序中源代码克隆开源软件的方法,其特征在于,所述token结构体的属性还包括索引符,在解析程序代码时,按照所述索引符的标识顺序解析程序代码中的特征字符,且,生成当前所述比对对象的哈希码时,通过所述索引符调用上一个所述比对对象的哈希码。
3.根据权利要求2所述的检测应用程序中源代码克隆开源软件的方法,其特征在于,生成当前所述比对对象的哈希码时,当所述索引符大于某一设定值时,所述比对对象的哈希码通过下述公式生成:
hash=hash0*B+A-A0,其中,A0为前一所述比对对象所对应的标识符。
4.根据权利要求2所述的检测应用程序中源代码克隆开源软件的方法,其特征在于,所述token结构体的属性还包括行符和字符名称,所述行符代表所述比对对象在程序流中的行号,所述字符名称表示所述比对对象所属的特征字符。
5.根据权利要求1所述的检测应用程序中源代码克隆开源软件的方法,其特征在于,通过大规模数据收集工具自动从网络收集并下载高安全风险和高license风险的开源软件的源码文件,并采用所述代码解析处理方法对这些源码文件进行解析,将解析结果存储在比对数据库中,并不断对所述比对数据库进行实时更新。
6.一种检测应用程序中源代码克隆开源软件的系统,其特征在于,包括代码解析处理系统和比对系统;
所述代码解析处理系统,包括解析器创建模块和解析模块;所述解析器创建模块用于构建基于token结构的解析器,并自定义解析规则;所述解析模块用于采用所述解析器将程序代码中的特征字符一一解析成按序排列的单独的token结构体,以得到比对对象,所述token结构体的属性包括哈希码和标识符,所述标识符代表所述比对对象所属的字符类别;
所述比对系统包括预处理模块和比较判断模块,所述预处理模块用于通过所述代码解析处理系统对开源程序和当前待检测的应用程序进行预处理,并将处理后所得到的所述比对对象分别存储;所述比较判断模块用于将属于所述应用程序的各个比对对象按照次序与属于所述开源程序的比对对象进行比较,如果有连续N个相比较的所述比对对象的哈希码和标识符相同,则判断为克隆代码,其中,N为自定义的一大于零的自然数;
所述解析模块通过下述公式生成所述比对对象的哈希码;
hash=hash0*B+A,其中,hash代表当前所述比对对象的哈希码,hash0代表与当前所述比对对象相邻的上一个所述比对对象的哈希码,A代表当前所述比对对象的标识符,B代表为一奇质数的哈希常数。
7.根据权利要求6所述的检测应用程序中源代码克隆开源软件的系统,其特征在于,所述token结构体的属性还包括索引符,在解析程序代码时,按照所述索引符的标识顺序解析程序代码中的特征字符,且,生成当前所述比对对象的哈希码时,通过所述索引符调用上一个所述比对对象的哈希码。
8.根据权利要求7所述的检测应用程序中源代码克隆开源软件的系统,其特征在于,当所述索引符大于某一设定值时,所述解析模块通过下述公式生成所述比对对象的哈希码:
hash=hash0*B+A-A0,其中,A0为前一所述比对对象所对应的标识符。
9.一种检测应用程序中源代码克隆开源软件的系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1至5任一项所述的检测应用程序中源代码克隆开源软件的方法的指令。
10.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至5任一项所述的检测应用程序中源代码克隆开源软件的方法。
CN201911027570.9A 2019-10-25 2019-10-25 检测应用程序中源代码克隆开源软件的方法及系统 Active CN110989991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911027570.9A CN110989991B (zh) 2019-10-25 2019-10-25 检测应用程序中源代码克隆开源软件的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911027570.9A CN110989991B (zh) 2019-10-25 2019-10-25 检测应用程序中源代码克隆开源软件的方法及系统

Publications (2)

Publication Number Publication Date
CN110989991A CN110989991A (zh) 2020-04-10
CN110989991B true CN110989991B (zh) 2023-12-01

Family

ID=70082461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911027570.9A Active CN110989991B (zh) 2019-10-25 2019-10-25 检测应用程序中源代码克隆开源软件的方法及系统

Country Status (1)

Country Link
CN (1) CN110989991B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111917604A (zh) * 2020-07-28 2020-11-10 苏州浪潮智能科技有限公司 一种基于虚拟交换机仿真平台自动化测试SONiC的方法
CN112529160B (zh) * 2020-12-09 2024-08-23 南京大学 一种摄像器材记录的视频图像数据的高维模仿学习方法
CN113849185A (zh) * 2021-09-26 2021-12-28 中国工商银行股份有限公司 程序管控方法、程序管控装置、电子设备以及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894236A (zh) * 2010-07-28 2010-11-24 北京华夏信安科技有限公司 基于摘要语法树和语义匹配的软件同源性检测方法及装置
CN103729580A (zh) * 2014-01-27 2014-04-16 国家电网公司 一种检测软件抄袭的方法和装置
CN104077147A (zh) * 2014-07-11 2014-10-01 东南大学 一种基于代码克隆自动检测和及时提醒的软件复用方法
CN105426711A (zh) * 2015-11-18 2016-03-23 北京理工大学 一种计算机软件源代码相似度检测方法
CN106951743A (zh) * 2017-03-22 2017-07-14 上海英慕软件科技有限公司 一种软件代码侵权检测方法
CN107066262A (zh) * 2017-03-10 2017-08-18 苏州棱镜七彩信息科技有限公司 源代码文件克隆邻接表合并检测方法
CN107688748A (zh) * 2017-09-05 2018-02-13 中国人民解放军信息工程大学 基于漏洞指纹的脆弱性代码克隆检测方法及其装置
CN109445834A (zh) * 2018-10-30 2019-03-08 北京计算机技术及应用研究所 基于抽象语法树的程序代码相似性快速比较方法
CN109558314A (zh) * 2018-11-09 2019-04-02 国网四川省电力公司电力科学研究院 一种面向Java源代码克隆检测的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101780233B1 (ko) * 2016-04-26 2017-09-21 고려대학교 산학협력단 소프트웨어의 코드 클론 탐지 장치 및 방법

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894236A (zh) * 2010-07-28 2010-11-24 北京华夏信安科技有限公司 基于摘要语法树和语义匹配的软件同源性检测方法及装置
CN103729580A (zh) * 2014-01-27 2014-04-16 国家电网公司 一种检测软件抄袭的方法和装置
CN104077147A (zh) * 2014-07-11 2014-10-01 东南大学 一种基于代码克隆自动检测和及时提醒的软件复用方法
CN105426711A (zh) * 2015-11-18 2016-03-23 北京理工大学 一种计算机软件源代码相似度检测方法
CN107066262A (zh) * 2017-03-10 2017-08-18 苏州棱镜七彩信息科技有限公司 源代码文件克隆邻接表合并检测方法
CN106951743A (zh) * 2017-03-22 2017-07-14 上海英慕软件科技有限公司 一种软件代码侵权检测方法
CN107688748A (zh) * 2017-09-05 2018-02-13 中国人民解放军信息工程大学 基于漏洞指纹的脆弱性代码克隆检测方法及其装置
CN109445834A (zh) * 2018-10-30 2019-03-08 北京计算机技术及应用研究所 基于抽象语法树的程序代码相似性快速比较方法
CN109558314A (zh) * 2018-11-09 2019-04-02 国网四川省电力公司电力科学研究院 一种面向Java源代码克隆检测的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
边奕心 等.使用哈希值和标识符冲突率的 克隆代码检测的误检消除方法.《智能计算机与应用》.2013,第3卷(第5期),第46-49页. *

Also Published As

Publication number Publication date
CN110989991A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
Đurić et al. A source code similarity system for plagiarism detection
CN111459799B (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
US11775414B2 (en) Automated bug fixing using deep learning
CN110989991B (zh) 检测应用程序中源代码克隆开源软件的方法及系统
EP3674918B1 (en) Column lineage and metadata propagation
WO2019051426A1 (en) PRUNING ENGINE
CN109684838B (zh) 一种针对以太坊智能合约的静态代码审计系统及方法
CN108446540A (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
US20050039117A1 (en) Method, system, and computer program product for comparing two computer files
CN112416806B (zh) 一种基于标准文档分析的js引擎模糊测试方法
CN108491228B (zh) 一种二进制漏洞代码克隆检测方法及系统
CN113254751B (zh) 一种复杂网页结构化信息精确提取方法、设备及存储介质
CN108345457A (zh) 一种对程序源代码自动生成功能描述性注释的方法
CN114398069B (zh) 一种基于交叉指纹分析的公共组件库精确版本识别方法及系统
CN111881300A (zh) 面向第三方库依赖的知识图谱构建方法及系统
US20120078950A1 (en) Techniques for Extracting Unstructured Data
CN116305158A (zh) 一种基于切片代码依赖图语义学习的漏洞识别方法
US20030200534A1 (en) Mechanism for reformatting a simple source code statement into a compound source code statement
CN117940894A (zh) 用于检测代码克隆的系统和方法
US20090204889A1 (en) Adaptive sampling of web pages for extraction
AU2012203538A1 (en) Systems and methods for inter-object pattern matching
JP2022105474A (ja) Cveエントリを使用するネットワークデバイスの脆弱性を検証するための方法
CN117435189A (zh) 金融系统接口的测试用例分析方法、装置、设备及介质
CN118013526A (zh) 一种基于llm多源异构信息融合的二进制漏洞数据集构建方法和装置
CN110688303A (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
GR01 Patent grant
GR01 Patent grant