一种基于文本的软件源代码块指纹生成方法技术

技术编号:46576254 阅读:1 留言:0更新日期:2025-10-10 21:19
本发明专利技术涉及一种基于文本的软件源代码块指纹生成方法,属于软件代码重用检测技术领域。本发明专利技术通过代码预处理,消除了代码重用过程中增加或删除注释、空格、制表符、回车、换行代码等修改代码方式对代码重用检测的影响,提高了提高代码重用检测的检出率;通过设置代码块字符数阈值过滤小代码块,降低小代码块对代码重用检测的影响,提高了代码块重用检测的准确性;本发明专利技术通过设置代码块哈希窗口,从中选择字符数最多代码块的哈希值作为最终代码块指纹,缩小了代码块指纹集合规模,减少了代码块重用检测过程中的检索比对工作量,提高了代码块重用检测效率。

【技术实现步骤摘要】

本专利技术属于软件代码重用检测,具体涉及一种基于文本的软件源代码块指纹生成方法


技术介绍

1、代码重用是指在软件开发过程中,重复使用已有代码实现构建新软件的活动。通过代码重用,一方面可以减少软件开发过程中大量的重复性工作,从而提高开发效率,降低开发成本,缩短开发周期。另一方面,重用代码一般都经过了严格的测试,通过重用这些代码构造新软件可以减少测试时间,同时也能够提高软件质量和可靠性。

2、代码重用检测技术主要用于评估软件代码重用率,该技术在软件代码抄袭、软件知识版权保护、安全漏洞挖掘等多个领域都有广泛的应用。学术界和工业界都对代码重用检测技术进行了大量的研究,提出了许多针对代码重用检测的方法和技术。然而,现有方法或技术要么采用较为粗粒度的比对方式,如基于文件的比对,这种比对方式精确性和效率较高,但漏检率也高;要么采用细粒度的比对方式,如基于代码行的比对,这种比对方式漏检率较低,但是效率低下,只适合小规模数据场景,无法满足大规模数据场景下的代码重用检测需求。


技术实现思路

1、(一)要解决的技术问本文档来自技高网...

【技术保护点】

1.一种基于文本的软件源代码块指纹生成方法,其特征在于,包括以下步骤:

2.如权利要求1所述的方法,其特征在于,代码预处理的过程具体为:

3.如权利要求2所述的方法,其特征在于,代码分块的过程具体为:按照代码行数k,对代码行集合F'进行分块处理,第i个代码块blocki表示为:

4.如权利要求1所述的方法,其特征在于,代码块哈希具体是将任意长度的代码块映射成固定长度的哈希值,并采用至少两种哈希算法进行代码块哈希值的计算,通过多种哈希值确认代码块一致性。

5.如权利要求3所述的方法,其特征在于,代码块哈希的过程具体为:针对每一代码块block...

【技术特征摘要】

1.一种基于文本的软件源代码块指纹生成方法,其特征在于,包括以下步骤:

2.如权利要求1所述的方法,其特征在于,代码预处理的过程具体为:

3.如权利要求2所述的方法,其特征在于,代码分块的过程具体为:按照代码行数k,对代码行集合f'进行分块处理,第i个代码块blocki表示为:

4.如权利要求1所述的方法,其特征在于,代码块哈希具体是将任意长度的代码块映射成固定长度的哈希值,并采用至少两种哈希算法进行代码块哈希值的计算,通过多种哈希值确认代码块一致性。

5.如权利要求3所述的方法,其特征在于,代码块哈希的过程具体为:针对每一代码块blocki∈b,1≤i≤n-k+1,计算代码块blocki包含的字符数nchari,以及代码块哈希值vhashi,得到代码块blocki的字符数和哈希值元组(nchari,vhashi);最终得到代码块字符数和哈希值元组集合h={(nchar...

【专利技术属性】
技术研发人员:陶金龙张建伟笪昊凡冯大成安恒杨波
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1