[發(fā)明專利]代碼克隆的檢測方法有效
| 申請?zhí)枺?/td> | 201410730368.3 | 申請日: | 2014-12-04 |
| 公開(公告)號: | CN104407872B | 公開(公告)日: | 2018-01-16 |
| 發(fā)明(設(shè)計)人: | 張程鵬;李祺;李承澤;董楓;楊昕雨 | 申請(專利權(quán))人: | 北京郵電大學 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 北京德琦知識產(chǎn)權(quán)代理有限公司11018 | 代理人: | 王一斌,王琦 |
| 地址: | 100876 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 代碼 克隆 檢測 方法 | ||
1.一種代碼克隆的檢測方法,其特征在于,包括:
a、對待檢測的兩組程序代碼,分別提取各自調(diào)用的應(yīng)用程序編程接口API集合;
b、確定每組程序代碼的API集合中各API的調(diào)用頻率;其中,確定所述調(diào)用頻率時判斷API被調(diào)用的原則為:如果程序代碼中的一個函數(shù)直接或間接調(diào)用了一API,并且該函數(shù)不是其他函數(shù)用于間接調(diào)用該API的中間函數(shù),則確定該API被調(diào)用一次;
c、對于每組程序代碼k,根據(jù)其對應(yīng)的所述API的調(diào)用頻率,生成該組程序代碼的n維標記向量Vk={vk,1,vk,2,...,vk,n},所述n維標記向量中的各維度值vk,i與集合N={API1,API2,...,APIn}中的各API一一對應(yīng),i={1,2...,n},所述集合N為所述兩組程序代碼的API集合的并集,所述vk,i根據(jù)第k組程序代碼對所對應(yīng)的APIi的調(diào)用頻率pk,i得到;所述vk,i=pk,i/di,di為所述vk,i對應(yīng)的調(diào)整系數(shù),如果所述vk,i對應(yīng)的API在所述兩組程序代碼中均被調(diào)用,則di=2,否則,di=1;
d、根據(jù)每組程序代碼的所述n維標記向量,計算所述兩組程序代碼的相似度;
e、根據(jù)所述相似度和預(yù)設(shè)相似閾值α,確定所述兩組程序代碼是否存在克隆關(guān)系。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟d包括:
對于兩組程序代碼的所述n維標記向量V1={v1,1,v1,2,...,v1,n}和V2={v2,1,v2,2,...,v2,n},按照和進行歸一化處理,得到U1={u1,1,u1,2,...,u1,n}和U2={u2,1,u2,2,...,u2,n};
按照計算所述兩組程序代碼的相似度S(U1,U2)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟e包括:
如果所述相似度小于所述相似閾值α,則確定所述兩組程序代碼存在克隆關(guān)系,所述相似閾值α∈[0.1,1];
如果所述相似度大于2-α,則確定所述兩組程序代碼之間不存在克隆關(guān)系。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述相似閾值α=0.8。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京郵電大學,未經(jīng)北京郵電大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410730368.3/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種多功能開口咬合器
- 下一篇:網(wǎng)格分解方法及系統(tǒng)





