-
题名面向代码相似性检测的相似哈希改进方法
被引量:10
- 1
-
-
作者
李玫
高庆
马森
张世琨
胡文蕙
张兴明
-
机构
高可信软件技术教育部重点实验室(北京大学)
北京大学软件工程国家工程研究中心
北京大学软件与微电子学院
之江实验室
-
出处
《软件学报》
EI
CSCD
北大核心
2021年第7期2242-2259,共18页
-
基金
2019年工业互联网创新发展工程-工业软件源代码安全检测工具项目
之江实验室“先进工业互联网安全平台”项目(2018FD0ZX01)
-
文摘
代码相似性检测(code similarity detection)是软件工程领域的基本任务之一,其在剽窃检测、许可证违反检测、软件复用分析以及漏洞发现等方向均起着重要作用.随着软件开源化的普及以及开源代码量的高速增长,开源代码在各个领域的应用日益频繁,给传统的代码相似性检测方法带来了新的挑战.现有的一些基于词法、语法、语义的检测方法存在算法较为复杂、对解析工具有依赖性、消耗资源高、可移植性差、候选对比项数量较多等问题,在大规模代码库上有一定的局限性.基于相似哈希(simhash)指纹的代码相似性检测算法将代码降维至1个指纹,能够在数据集规模较大的情况下实现快速相似文件检索,并通过海明距离阈值控制匹配结果的相似度范围.通过实验对现有的基于代码行粒度的相似哈希算法进行验证,发现其在大规模数据集下存在行覆盖问题,即高频行特征对低频行特征的覆盖现象,导致结果精确度较低.受TF-IDF算法思想启发,针对上述问题创新性地提出了分语言行筛选优化方法,通过各种语言的行筛选器对代码文件行序列进行筛选,从而消除高频出现但语义信息包含较少的行对结果的影响.对改进前后方法进行一系列对比实验,结果表明,改进后的方法在海明距离阈值为0~8的情况下都能够实现高精确度的相似文件对检索,当阈值为8时在两个数据集下的精确度较改进前的方法分别提升了98.6%和52.2%.在所建立的130万个开源项目、386486112个项目文件的大规模代码库上进行了实验,结果表明所提方法能够快速检测出待测文件的相似文件结果,平均单个文件检测时间为0.43s,并取得了97%以上的检测精度.
-
关键词
代码相似性检测
代码同源分析
大数据
相似哈希
代码指纹生成
-
Keywords
code similarity detection
code homology analyze
big data
simhash
code fingerprint generation
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-