首页> 中文期刊> 《软件学报》 >面向代码相似性检测的相似哈希改进方法

面向代码相似性检测的相似哈希改进方法

         

摘要

代码相似性检测(code similarity detection)是软件工程领域的基本任务之一,其在剽窃检测、许可证违反检测、软件复用分析以及漏洞发现等方向均起着重要作用.随着软件开源化的普及以及开源代码量的高速增长,开源代码在各个领域的应用日益频繁,给传统的代码相似性检测方法带来了新的挑战.现有的一些基于词法、语法、语义的检测方法存在算法较为复杂、对解析工具有依赖性、消耗资源高、可移植性差、候选对比项数量较多等问题,在大规模代码库上有一定的局限性.基于相似哈希(simhash)指纹的代码相似性检测算法将代码降维至1个指纹,能够在数据集规模较大的情况下实现快速相似文件检索,并通过海明距离阈值控制匹配结果的相似度范围.通过实验对现有的基于代码行粒度的相似哈希算法进行验证,发现其在大规模数据集下存在行覆盖问题,即高频行特征对低频行特征的覆盖现象,导致结果精确度较低.受TF-IDF算法思想启发,针对上述问题创新性地提出了分语言行筛选优化方法,通过各种语言的行筛选器对代码文件行序列进行筛选,从而消除高频出现但语义信息包含较少的行对结果的影响.对改进前后方法进行一系列对比实验,结果表明,改进后的方法在海明距离阈值为0~8的情况下都能够实现高精确度的相似文件对检索,当阈值为8时在两个数据集下的精确度较改进前的方法分别提升了98.6%和52.2%.在所建立的130万个开源项目、386486112个项目文件的大规模代码库上进行了实验,结果表明所提方法能够快速检测出待测文件的相似文件结果,平均单个文件检测时间为0.43s,并取得了97%以上的检测精度.

著录项

  • 来源
    《软件学报》 |2021年第7期|2242-2259|共18页
  • 作者单位

    高可信软件技术教育部重点实验室(北京大学) 北京 100871;

    北京大学软件工程国家工程研究中心 北京100871;

    北京大学软件与微电子学院 北京 102600;

    高可信软件技术教育部重点实验室(北京大学) 北京 100871;

    北京大学软件工程国家工程研究中心 北京100871;

    高可信软件技术教育部重点实验室(北京大学) 北京 100871;

    北京大学软件工程国家工程研究中心 北京100871;

    高可信软件技术教育部重点实验室(北京大学) 北京 100871;

    北京大学软件工程国家工程研究中心 北京100871;

    高可信软件技术教育部重点实验室(北京大学) 北京 100871;

    北京大学软件工程国家工程研究中心 北京100871;

    之江实验室 浙江杭州311121;

  • 原文格式 PDF
  • 正文语种 chi
  • 中图分类 程序设计、软件工程;
  • 关键词

    代码相似性检测; 代码同源分析; 大数据; 相似哈希; 代码指纹生成;

相似文献

  • 中文文献
  • 外文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号