0 引言
随着软件规模的日益增长和开源生态的发展,复用开源代码成为节省软件开发时间成本和人力成本的有效手段[1]。然而,复用开源代码存在引入开源漏洞和违反开源许可等问题。例如,基于Android的移动操作系统CyanogenMod使用含有漏洞的JDK 1.5示例代码解析证书,导致系统易于遭受中间人攻击[2]。又如,Oracle查出Google在其Android项目中复用了来自OracleJDK的rangeCheck函数源码和若干文件的反编译源码,为此双方展开长达数年的诉讼[3]。因此,有必要检测开发软件中函数级别的复用开源代码。
由于复用代码之间本身的相似性,使用代码克隆检测工具可以检测到复用代码。与此同时,现有的克隆检测工具检出的克隆代码中,还常常包含大量由于偶然原因而相似的代码,称为偶然克隆[4-5],并非复用代码。由于一些高度相似甚至相同的常见函数可能是偶然克隆(例如Java中的hashCode、equals等函数),而一些经过修改的复用代码与被复用的原始代码不完全相同,因此在代码克隆检测之后需要一种更为精准的方法检测复用代码,以减少偶然克隆代码的影响。据了解,关于复用代码检测的现有研究极少考虑到偶然克隆代码的影响,而关于偶然克隆的现有研究大多为实证研究[4-6],目前尚未应用到复用代码检测上。
本文详细内容请下载:http://www.chinaaet.com/resource/share/2000003595
作者信息:
张德浩1,2,徐 云1,2
(1.中国科学技术大学 计算机科学与技术学院,安徽 合肥230027;
2.中国科学技术大学 国家高性能计算中心,安徽 合肥230026)
凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。