[發(fā)明專利]源代碼文件克隆鄰接表合并檢測方法在審
| 申請?zhí)枺?/td> | 201710140323.4 | 申請日: | 2017-03-10 |
| 公開(公告)號: | CN107066262A | 公開(公告)日: | 2017-08-18 |
| 發(fā)明(設計)人: | 羅峋;饒飛 | 申請(專利權)人: | 蘇州棱鏡七彩信息科技有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F11/36 |
| 代理公司: | 蘇州唯亞智冠知識產(chǎn)權代理有限公司32289 | 代理人: | 陳曉瑜 |
| 地址: | 215000 江蘇省蘇州市蘇州工*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 源代碼 文件 克隆 鄰接 合并 檢測 方法 | ||
1.源代碼文件克隆鄰接表合并檢測方法,其特征在于包括以下步驟:
步驟一,構造開源項目指紋庫,并進行指紋庫索引建立和存儲;
步驟二,針對鄰接表合并檢測;
步驟三,相似度計算;
單個源文件中所有規(guī)范化后的Token,從第一個開始,每固定個數(shù)被轉換為一個Chunk,這樣,每個代碼文件轉換后會生成很多Chunk,然后將每個Chunk都存儲到HBase中。
2.根據(jù)權利要求1所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述步驟一中,
對源代碼文件所在目錄進行遍歷,根據(jù)用戶定義的開發(fā)語言,從目錄中過濾出對應的源文件,
通過詞法分析器對源代碼文件進行分析,從中提取出Token并記錄每個Token的類型,
所述詞法分析器,根據(jù)源代碼的語言類型,從源文件中提取標識符、常量、關鍵字、運算符等Token單元,存放到符號表中,
所述詞法分析器,每次分析到一個新的Token,就交給規(guī)范化程序,對提取到的Token進行規(guī)范化。
3.根據(jù)權利要求2所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述規(guī)范化的規(guī)則為,
(1)直接忽略注釋、括號等分隔符、預處理指令、this調用、命名空間限定符、可見度修飾符等內容;
(2)標識符用id加上編號進行替換,編號從0開始,出現(xiàn)過的使用已有編號,沒有出現(xiàn)過的編號遞增;
(3)字符串用空串替換;
(4)字符用固定字符串替換;
(5)整型數(shù)值用0替換;
(6)浮點類型用0.0替換;
(7)布爾值用true替換。
4.根據(jù)權利要求1所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述步驟一中,當有項目需要進行檢測的時候,首先對項目的源代碼也進行轉化,以單個文件為粒度,轉換為Chunk序列,然后根據(jù)每個Chunk單元的hash值,到HBase中進行檢索,檢索出所有具有同樣hash值的索引單元;
檢索出來的結果,需要根據(jù)待檢測文件中索引單元的排列順序進行排列,最終形成一個二維鄰接表類型的數(shù)據(jù)結構;
采用行頭元素構成待檢測文件中的Chunk單元,每一行中存放與行頭元素具有相同hash值的從索引庫中檢索出來的Chunk單元,行與行之間按照行頭元素在待檢測文件中排列的順序進行排列。
5.根據(jù)權利要求1所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述步驟一中,將經(jīng)過步驟一預處理的源代碼,被轉換成了規(guī)范化后的Token序列,由后續(xù)過程利用這個Token序列建立索引單元Chunk,
經(jīng)過預處理過程的Token,按照固定數(shù)目進行結合,構成了一個基本的索引單元Chunk,
所述索引單元Chunk是對源代碼進行的一種壓縮,索引單元Chunk里面不含源代碼的文本信息,只含有這一段代碼的hash值等信息,
所述索引單元的基本結構如下表所示,
6.根據(jù)權利要求1所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述步驟二中,位于鄰接表的每一行的行頭元素為某個待檢測文件生成的Chunk單元,行頭按照在待檢測文件中的順序排列;
每一行除了行頭外,其他所有Chunk都是從HBase的索引庫中檢索出來的,這些是開源代碼生成的Chunk,這些索引單元的hash值都與行頭元素的hash值相同,并且,同一行內,索引單元序列按照所在的文件編號和在文件中出現(xiàn)的位置進行排序。
7.根據(jù)權利要求1所述的源代碼文件克隆鄰接表合并檢測方法,其特征在于:所述步驟三中,
對克隆結果匯總之后,計算源文件之間的相似度,
設兩個源文件為P和Q,P是由一系列元素p1,p2,...pn構成,Q由一系列元素q1,q2,...qn構成,這些元素表示源文件P和Q中的索引單元;
所有索引單元之間的克隆對(pi,qj)構成一個集合,用Rs表示,源文件P和Q之間的相似度S(P,Q)采用下面的公式來表示,
其中,P中存在克隆現(xiàn)象的索引單元個數(shù)與Q中存在克隆現(xiàn)象的索引單元個數(shù)之和,比上P中索引單元個數(shù)與Q中索引單元個數(shù)之和。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于蘇州棱鏡七彩信息科技有限公司,未經(jīng)蘇州棱鏡七彩信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710140323.4/1.html,轉載請聲明來源鉆瓜專利網(wǎng)。





