CN106294139A - 一种软件代码中重复片段的检测提取方法 - Google Patents

一种软件代码中重复片段的检测提取方法 Download PDF

Info

Publication number
CN106294139A
CN106294139A CN201610625476.3A CN201610625476A CN106294139A CN 106294139 A CN106294139 A CN 106294139A CN 201610625476 A CN201610625476 A CN 201610625476A CN 106294139 A CN106294139 A CN 106294139A
Authority
CN
China
Prior art keywords
file
source code
node
code
detection
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.)
Granted
Application number
CN201610625476.3A
Other languages
English (en)
Other versions
CN106294139B (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.)
University of Shanghai for Science and Technology
Original Assignee
University of Shanghai for Science and Technology
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 University of Shanghai for Science and Technology filed Critical University of Shanghai for Science and Technology
Priority to CN201610625476.3A priority Critical patent/CN106294139B/zh
Publication of CN106294139A publication Critical patent/CN106294139A/zh
Application granted granted Critical
Publication of CN106294139B publication Critical patent/CN106294139B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Landscapes

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

Abstract

本发明提供了一种软件代码中重复片段的检测提取方法,该方法包括如图的步骤一到步骤八,由于代码片段提取采取的语法树中的分层的信息,考虑了代码片段中的语法信息,使得提取的代码片段是有意义的。此外,代码片段的提取过程受到基于倒排索引的查重机制控制:如果已经发现高层次的重复了,低层次就不提取了。这种提取方法相较目前的大多数技术中先分到最小的片段检查重复然后再进行组合的方式,可以节约很多计算量。过程中,检测窗口大小能够根据实际是否存在重复的上下文进行自动调节,提高性能,检测速度快,可以被应用于实时检测场景。同时因为该方法结合了语法结构信息,因此误判率非常低。

Description

一种软件代码中重复片段的检测提取方法
技术领域
本发明属于计算机程序领域,特别是涉及一种检测软件代码中重复片段的方法。
背景技术
代码重复检测在软件开发中具有十分重要的意义。首先代码重复检测可以提高软件的可维护性,如果任由重复代码散布在各处,那么如果一处代码需要演进或进行缺陷修复,其他地方的代码也要跟着演进或进行缺陷修复,这样会影响可维护性。通过代码重复检测来发现代码中的重复,就能及时的把它们提取成函数,提高可维护性。其次可以降低软件开发中的法律风险,软件开发中存在不同的许可证,如果由于开发人员疏忽,不小心复制了具备传染性的许可证信息(如GNU许可证),那么就会给企业带来风险。再次,代码重复检测可以发现设计中的改进机会,重复的代码往往意味着存在可以提取的关键业务概念,及时发现这些重复有助于对业务模型和设计模型进行精化。此外,通过发现一些不合理的重复,还可能发现对既有的设计规则的违规行为,进行及时纠正。
现有的代码重复检测技术已经有很多,概括来说有如下几个大的分类:
1,基于文本的方式:简单的说就是把代码看成文本,直接检查文本的重复情况。这种分析方式提出的很早,但是功能很弱。J.Johnson(J.Johnson,Identifying redundancyin source code using fingerprints,in:Proceedings ofthe 1993Conference oftheCentre forAdvanced Studies on Collaborative Research,CASCON 1993,1993,pp.171–183)提出以行为单位进行文本比较,但速度慢,健壮性差;U.Manber(U.Manber,Findingsimilar files in a large file system,in:Proceedings of the Winter 1994UsenixTechnical Conference,1994,pp.1–10)提出的方法只能在文件级别检测重复。R.Wettel(R.Wettel,R.Marinescu,Archeology of code duplication:Recovering duplicationchains from small duplication fragments,in:Proceedings of the 7thInternational Symposium on Symbolic and Numeric Algorithms for ScientificComputing,SYNASC 2005,2005,p.8)使用散点图来聚集较小的重复片段,速度慢。
2.基于Token(令牌)的方式:把文本采用词法分析器进行分析,提取其中的Token,然后进一步加以分析。相对于基于文本的方式,基于Token的方式能够忽略代码中一些不重要的内容差异,例如注释、空行、换行等。B.Baker(B.Baker,A program for identifyingduplicated code,in:Proceedings of Computing Science and Statistics:24thSymposium on the Interface,vol.24,1992,pp.49–57)的方法只适用于行级别的token操作和后缀树检测。T.Kamiya等人(T.Kamiya,S.Kusumoto,K.Inoue,CCFinder:Amultilinguistic token-based code clone detection system for large scalesource code,IEEE Transactions on Software Engineering 28(7)(2002)654–670.)提出的方法中采取的基于Token的后缀树没有考虑语法信息,速度比较慢。
3.基于抽象语法树(AST,Abstract Syntax Tree)的方式:提取代码的语法树信息,并在树的结构层次上进行重复比较。R.Tairas,等人的方法(R.Tairas,J.Gray,Phoenix-based clone detection using suffix trees,in:Proceedings of the 44thAnnual Southeast Regional Conference,ACM-SE 2006,2006,pp.679–684)使用语法树获取结点,然后使用后缀树进行分析,分析的过程是经典的常规方法。这种算法的缺点是非常慢。也有把语法树展开成序列,然后利用后缀树进行检测的算法,这种算法比基于语法树的算法要快,但是由于语法结构元素多,实际的运行速度的改进仍然有限。I.Baxter等人的方法(I.Baxter,A.Yahin,L.Moura,M.Anna,Clone detection using abstract syntaxtrees,in:Proceedings of the 14th International Conference on SoftwareMaintenance,ICSM 1998,1998,pp.368–377)根据语法树进行分区,然后进行树的相似度的比较,只是把比较对象通过分区进行降维,也仍然需要大量的比较运算。
4.基于程序调用图(PDG,Program Dependency Graph)的方式(J.Krinke,Identifying similar code with program dependence graphs,in:Proceedings ofthe8th Working Conference on Reverse Engineering,WCRE,2001,2001,pp.301–309)分析代码中的调用信息然后利用图的相似度算法进行比较。这种算法慢,而且效果也不太好,实际应用很少。
5.基于代码质量度量的方式(K.Kontogiannis,R.DeMori,E.Merlo,M.Galler,M.Bernstein,Pattern matching for clone and concept detection,Journal ofAutomated Software Engineering 3(1–2)(1996)77–108),这种方式效率低,计算量大,因而实际应用很少。
6.基于索引(也称为倒排索引)的方式(Benjamin Hummel,Elmar Juergens,LarsHeinemann,and Michael Conradt.Index-based code clone detection:Incremental,distributed,scalable.In the International Conference on Software Maintenance,pages 1–9,sept.2010),基于索引的方式效率很高,但是目前仅有的基于索引的方式采用的滑窗方案,性能和检测质量也都不好,不够稳定,健壮性不好。
发明内容
本发明为解决上述问题,提出了一种新的软件代码中重复片段的检测提取方法来高效,快速的检测软件代码中的重复片段,具有很好的健壮性和准确率。
一种软件代码中重复片段的检测提取方法,对输入的待分析的一组源代码文件进行分析检测后提取得到源代码文件中的重复片段,其特征在于,包括以下步骤:
步骤一,遍历待分析的源代码文件,逐个读入该组文件中每个文件的代码,并使用抽象语法树语法分析器来获取抽象语法树并保留该抽象语法树到源代码文件的映射,从该抽象语法树中的根节点开始,按照前序遍历的顺序将节点依次标记为第o个文件第1,2,…,N个节点,直至最后的第z个文件第1,2,…,M个节点;
步骤二,从o=1,n=1开始,针对第1个文件的第1个节点的数据进行token化源代码操作,计算得到token化后的哈希值,并将该哈希值存入预先建立的倒排索引表中,
其中,倒排索引表的索引关键字为哈希字符串,索引内容为放置多个源代码片段的结构体的容器,结构体用于记录源代码片段;
步骤三,当倒排索引表存入一条对应的索引关键字和索引内容后统计属于该关键字的结构体的个数;
步骤四,判断步骤三中结构体的个数是否超过1,当判断为是时进入步骤七,当判断为否时进入下一步;
步骤五,当步骤四中结构体的个数不超过1时,进一步判断n=N是否成立,如果n=N不成立则令n=n+1后返回步骤二,如果成立则进入下一步;
步骤六,如果步骤五中n=N成立则再进一步判断z=o是否成立,如果不成立则令o=o+1返回步骤二,如果o=z成立则进入步骤八;
步骤七,当步骤四中结构体的个数超过1时,记录对应的源代码片段信息,包括的文件序号和节点编号,暂存起来并令n=n+x,其中n+x为n后面的首个不以n为祖先的节点,然后重复步骤二;
步骤八,提取倒排索引表中结构体个数超过1的行,每行结构体容器内的源代码片段信息映射得到的源代码片段序列即为重复片段,输出该重复片段。
发明作用与效果
根据本发明所提供的软件代码中重复片段的检测提取方法,由于代码片段提取既不是行,也不是滑窗,而是采取的语法树中的分层信息,考虑了代码片段中的语法信息,使得提取的代码片段是有意义的。此外,这里的代码片段并不是一开始就全部提取出来,而是受到基于倒排索引的查重机制控制的,即是否访问更下一层的信息受到是否已经发现重复的控制。如果已经发现高层次的重复了,低层次就不提取了。这种提取方法相较目前的大多数技术中先分到最小的片段检查重复然后再进行组合的方式,可以节约很多计算量。
上述过程中,检测窗口大小能够根据实际是否存在重复的上下文进行自动调节,提高性能,检测速度快,可以被应用于实时检测场景。同时该方法结合了语法结构信息,因此误判率非常低。
附图说明
图1为本发明实施例的软件代码中重复片段的检测提取方法的步骤示意图;
图2为抽象语法树按照前序遍历方式形成的节点编号示意图;
图3为待检测文件a对应的语法树及按前序遍历标记的节点序号示意图;
图4为待检测文件a和抽象语法树之间的映射示意图;
图5为待检测文件b对应的语法树及按前序遍历标记的节点序号示意图;
图6为待检测文件b和抽象语法树之间的映射示意图;
图7为倒排索引表示意图;
图8为基于倒排索引表发现代码重复片段的示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明的软件代码中重复片段的检测提取方法的原理步骤使用效果作具体阐述。
实施例
本实施例使用待检测文件a、b两段源代码进行重复片段的提取。
待检测文件a:
待检测文件b:
图1为本发明实施例的软件代码中重复片段的检测提取方法的步骤示意图。
图2为抽象语法树按照前序遍历方式形成的节点编号示意图。
如图1、2所示,下面结合附图1,2对待检测文件a、b中重复片段的检测提取方法的详细过程进行说明。
步骤S1,遍历待分析的源代码文件,逐个读入该组文件中每个文件的代码,并使用抽象语法树语法分析器来获取抽象语法树并保留该抽象语法树到源代码文件的映射,从该抽象语法树中的根节点开始,按照前序遍历的顺序将节点依次标记为第o个文件第1,2,…,N个节点,直至最后的第z个文件第1,2,…,M个节点。本步骤中保留抽象语法树到源代码文件的映射,是为了方便后面的标准化和哈希值求取过程。
图3为待检测文件a对应的语法树及按前序遍历标记的节点序号示意图。
待检测文件a对应的语法树及按前序遍历标记的节点序号如图3所示。
图4为待检测文件a和抽象语法树之间的映射示意图。
该语法树到节点到待检测文件a的映射如图4所示。
图5为待检测文件b对应的语法树及按前序遍历标记的节点序号示意图。
图6为待检测文件b和抽象语法树之间的映射示意图。
同理,可以对待检测文件b生成抽象语法树并标记节点序号。待检测文件b的抽象语法树及其到原始文件到映射如图5和图6所示。
步骤S2,从o=1,n=1开始,针对第1个文件的第1个节点的数据进行token化源代码操作,计算得到token化后的哈希值,并将该哈希值存入预先建立的倒排索引表中,其中,倒排索引表的索引关键字为哈希字符串,索引内容为放置多个源代码片段的结构体的容器,结构体用于记录源代码片段。以结点为单位,计算归一化后的代码哈希值。
在实际的检测中,根据要求的精度不同,可以采取不同的token化算法。例如,如果需要检测完全精确的重复,就可以使用代码文本本身。如果需要检测语法结构的一致性但是忽略重命名等细微区别,就可以首先对这些代码进行替换。例如,本例中待检测文件a的节点4就可以替换为if($.$()){$.$.$(@);return$;}。其中使用$代替了标志符,使用@代替了字符串。具体采取哪种token化和归一化策略可以根据实际需要进行采纳,不涉及本专利公开的方法的本质。在后续例子中,我们采用如if($.$()){$.$.$(@);return$;}这种样式的归一化算法对哈希值进行计算。
图7为倒排索引表示意图。
如图7所示,其中,倒排索引表的索引关键字为哈希字符串,索引内容为放置多个源代码片段的结构体的容器,结构体用于记录节点的哈希值、源代码片段、对应的源代码片段在源代码文件中的相对位置序号。
步骤S3,当倒排索引表存入一条对应的索引关键字和索引内容后统计属于该关键字的结构体的个数。
步骤S4,判断步骤S3中结构体的个数是否超过1,当判断为是时进入步骤七,当判断为否时进入下一步。
步骤S5,当步骤S4中结构体的个数不超过1时,进一步判断n=N是否成立,如果n=N不成立则令n=n+1后返回步骤二,如果成立则进入下一步。
步骤S6,如果步骤S5中n=N成立则再进一步判断z=o是否成立,如果不成立则令o=o+1返回步骤二,如果o=z成立则进入步骤S8;
步骤S7,当步骤S4中结构体的个数超过1时,记录对应的源代码片段信息,包括的文件序号和节点编号,暂存起来并令n=n+x,其中n+x为n后面的首个不以n为祖先的节点,然后重复步骤S2;
图8为基于倒排索引表发现代码重复片段的示意图。
哈希值代表了该原始代码的特征信息,当已经出现大于1的情况时,就说明在该结点层次上的代码出现了重复。例如,在图7中,待检测文件a的节点7和节点9相同,说明它们是重复的。本发明的关键特征在于,由于采取了按照语法树前序遍历并及时检测倒排索引表,能够直接跳过已确认为重复的结点的子结点的重复检测。在本例中,当读入待检测文件b并遍历至节点3时,图7的倒排索引表如图8所示:由于(b,3)节点和(a,4)节点是重复的,所以(b,3)的所有下级节点,也就是4,5,6结点也必然是重复的,因此下层结点出现的重复属于冗余信息,不需要进行处理,这样既保证了检测结果,也提高了检测速度。
另外,背景技术中既有方法普遍使用的是滑动窗口,没有层次信息,同时也很难定义滑窗的大小,因此按固定滑窗检测到的重复结果,如果在更高的层次上有重复,还需要进行二次归并,相较于本方法效率低、速度慢,精度差。
步骤S8,提取倒排索引表中结构体个数超过1的行,每行结构体容器内的源代码片段信息映射得到的源代码片段序列即为重复片段,输出该重复片段。
在本实施例中,对应的代码片段是(a,4),(b,3),即
这段代码。
实施例的作用和有益效果
根据本实施例所提供的软件代码中重复片段的检测提取方法,由于代码片段提取既不是行,也不是滑窗,而是采取的语法树中的分层的信息,考虑了代码片段中的语法信息,使得提取的代码片段是有意义的。此外,这里的代码片段并不是一开始就全部提取出来,而是受到基于倒排索引的查重机制控制的即是否访问更下一层的信息受到是否已经发现重复的控制。如果已经发现高层次的重复了,低层次就不提取了。这种提取方法相较目前的大多数技术中先分到最小的片段检查重复然后再进行组合的方式,可以节约很多计算量。
进一步地,该方法通过倒排索引快速检测重复的片段,然后产生用于后续的重复序列的分析的输入。同时,通过是否存在重复的判断来控制进一步是否进行往下的分割。仅仅对具有重复的部分,才产生代码序列,然后使用既有技术的后缀树方法进行分析,大幅提高了性能。
哈希值代表了该源代码文件的特征信息,当已经出现哈希值个数大于1的情况时,就说明在该结点层次上的代码出现了重复,而下一个节点结点也必然是重复的,因此下层结点出现的重复属于冗余信息,不需要进行处理,这样即保证了检测结果,也提高了检测速度。
另外,背景技术中既有的方法往往使用的是滑动窗口,没有层次信息,同时也很难定义滑窗的大小,因此按固定滑窗检测到的重复结果,如果在更高的层次上有重复,还需要进行二次归并,因此本发明的方法相对于该方法效率高、速度快,精度好。

Claims (1)

1.一种软件代码中重复片段的检测提取方法,对输入的待分析的一组源代码文件进行分析检测后提取得到所述源代码文件中的重复片段,其特征在于,包括以下步骤:
步骤一,遍历待分析的所述源代码文件,逐个读入该组文件中每个文件的代码,并使用抽象语法树语法分析器来获取抽象语法树并保留该抽象语法树到所述源代码文件的映射,从该抽象语法树中的根节点开始,按照前序遍历的顺序将节点依次标记为第o个文件第1,2,…,N个节点,直至最后的第z个文件第1,2,…,M个节点;
步骤二,从o=1,n=1开始,针对第1个文件的第1个节点的数据进行token化源代码操作,计算得到token化后的哈希值,并将该哈希值存入预先建立的倒排索引表中,
其中,所述倒排索引表的索引关键字为哈希字符串,索引内容为放置多个源代码片段的结构体的容器,所述结构体用于记录所述源代码片段;
步骤三,当所述倒排索引表存入一条对应的所述索引关键字和所述索引内容后统计属于该关键字的所述结构体的个数;
步骤四,判断步骤三中所述结构体的个数是否超过1,当判断为是时进入步骤七,当判断为否时进入下一步;
步骤五,当步骤四中所述结构体的个数不超过1时,进一步判断n=N是否成立,如果n=N不成立则令n=n+1后返回步骤二,如果成立则进入下一步;
步骤六,如果步骤五中n=N成立则再进一步判断z=o是否成立,如果不成立则令o=o+1返回步骤二,如果o=z成立则进入步骤八;
步骤七,当步骤四中所述结构体的个数超过1时,记录对应的所述源代码片段信息,包括所述的文件序号和节点编号,暂存起来并令n=n+x,其中n+x为n后面的首个不以n为祖先的节点,然后重复步骤二;
步骤八,提取所述倒排索引表中所述结构体个数超过1的行,每行所述结构体容器内的源代码片段信息映射得到的所述源代码片段序列即为所述重复片段,输出该重复片段。
CN201610625476.3A 2016-08-02 2016-08-02 一种软件代码中重复片段的检测提取方法 Expired - Fee Related CN106294139B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610625476.3A CN106294139B (zh) 2016-08-02 2016-08-02 一种软件代码中重复片段的检测提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610625476.3A CN106294139B (zh) 2016-08-02 2016-08-02 一种软件代码中重复片段的检测提取方法

Publications (2)

Publication Number Publication Date
CN106294139A true CN106294139A (zh) 2017-01-04
CN106294139B CN106294139B (zh) 2018-08-31

Family

ID=57664166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610625476.3A Expired - Fee Related CN106294139B (zh) 2016-08-02 2016-08-02 一种软件代码中重复片段的检测提取方法

Country Status (1)

Country Link
CN (1) CN106294139B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297639A (zh) * 2019-07-01 2019-10-01 北京百度网讯科技有限公司 用于检测代码的方法和装置
CN112685080A (zh) * 2021-01-08 2021-04-20 深圳开源互联网安全技术有限公司 开源组件查重方法、系统、装置及可读存储介质
CN112783615A (zh) * 2019-11-08 2021-05-11 北京沃东天骏信息技术有限公司 一种数据处理任务的清理方法和装置
CN116302089A (zh) * 2023-05-23 2023-06-23 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质

Citations (3)

* 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 国家电网公司 一种检测软件抄袭的方法和装置
CN104572471A (zh) * 2015-01-28 2015-04-29 杭州电子科技大学 一种基于索引的Java软件代码克隆检测方法

Patent Citations (3)

* 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 国家电网公司 一种检测软件抄袭的方法和装置
CN104572471A (zh) * 2015-01-28 2015-04-29 杭州电子科技大学 一种基于索引的Java软件代码克隆检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴冲: "基于抽象语法树的重复代码检测", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297639A (zh) * 2019-07-01 2019-10-01 北京百度网讯科技有限公司 用于检测代码的方法和装置
CN112783615A (zh) * 2019-11-08 2021-05-11 北京沃东天骏信息技术有限公司 一种数据处理任务的清理方法和装置
CN112783615B (zh) * 2019-11-08 2024-03-01 北京沃东天骏信息技术有限公司 一种数据处理任务的清理方法和装置
CN112685080A (zh) * 2021-01-08 2021-04-20 深圳开源互联网安全技术有限公司 开源组件查重方法、系统、装置及可读存储介质
CN112685080B (zh) * 2021-01-08 2023-08-11 深圳开源互联网安全技术有限公司 开源组件查重方法、系统、装置及可读存储介质
CN116302089A (zh) * 2023-05-23 2023-06-23 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质
CN116302089B (zh) * 2023-05-23 2023-08-18 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质

Also Published As

Publication number Publication date
CN106294139B (zh) 2018-08-31

Similar Documents

Publication Publication Date Title
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
Kaltenecker et al. The interplay of sampling and machine learning for software performance prediction
CN111459799B (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
CN107229563A (zh) 一种跨架构的二进制程序漏洞函数关联方法
CN106294139A (zh) 一种软件代码中重复片段的检测提取方法
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
Jain et al. Query2vec: An evaluation of NLP techniques for generalized workload analytics
CN104834603A (zh) 一种面向回归测试的控制流变更影响域分析方法和系统
CN112035345A (zh) 一种基于代码片段分析的混合深度缺陷预测方法
Meng et al. [Retracted] A Deep Learning Approach for a Source Code Detection Model Using Self‐Attention
CN114036531A (zh) 一种基于多尺度代码度量的软件安全漏洞检测方法
CN116186759A (zh) 一种面向隐私计算的敏感数据识别与脱敏方法
CN117454387A (zh) 基于多维度的特征提取的漏洞代码检测方法
Sudhamani et al. Code similarity detection through control statement and program features
CN116305119A (zh) 基于预测指导原型的apt恶意软件分类方法和装置
Zhang et al. CPVD: Cross project vulnerability detection based on graph attention network and domain adaptation
Assefa et al. Intelligent phishing website detection using deep learning
Zeng et al. An efficient vulnerability extrapolation using similarity of graph kernel of pdgs
CN115858622B (zh) 一种业务数据核对脚本的自动化生成方法
Kadiyala et al. Applications of R to evaluate environmental data science problems
CN110554952B (zh) 一种基于搜索的分层回归测试数据生成方法
CN116401289A (zh) 一种基于多源信息结合的可追溯性链接自动恢复方法
Popoola et al. Classifying changes to models via changeset metrics
Rattan et al. Detecting high level similarities in source code and beyond
Omi et al. Multiple authors identification from source code using deep learning model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180831

Termination date: 20210802

CF01 Termination of patent right due to non-payment of annual fee