[發明專利]代碼克隆檢測方法、裝置以及電子設備有效
| 申請號: | 201811295180.5 | 申請日: | 2018-11-01 |
| 公開(公告)號: | CN111124487B | 公開(公告)日: | 2022-01-21 |
| 發明(設計)人: | 傅珉;楊昕立;鄢萌;李元平;章修琳;吳芮;楊小虎 | 申請(專利權)人: | 浙江大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75 |
| 代理公司: | 北京清源匯知識產權代理事務所(特殊普通合伙) 11644 | 代理人: | 馮德魁;竇曉慧 |
| 地址: | 310013 浙*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 克隆 檢測 方法 裝置 以及 電子設備 | ||
本申請公開了一種代碼克隆檢測方法,包括:獲取至少兩個版本的源代碼組成的源代碼集;將所述至少兩個版本的源代碼分別轉換為對應的代碼特征向量;將所述至少兩個版本的源代碼對應的代碼特征向量輸入集成分類模型進行克隆檢測,獲得克隆檢測結果。所述代碼克隆檢測方法,通過提取源代碼各自的特征信息將其轉換為代碼特征向量,在代碼特征向量的基礎上利用集成分類模型實現克隆檢測,從而降低了源代碼的特征損失,在此基礎上實現的代碼克隆檢測更加精準,同時也更具有效性。
技術領域
本申請涉及軟件克隆技術領域,具體涉及一種代碼克隆檢測方法。本申請同時涉及一種代碼克隆檢測裝置,以及一種電子設備。
背景技術
隨著軟件系統規模的日趨擴大化和復雜化,軟件開發工作也越來越繁重,在軟件開發過程中,軟件開發人員經常參照已有代碼來實現類似功能,或者直接通過復制粘貼來“復用”已有代碼,生成許多語義和功能上類似的代碼,這就是代碼克隆。盡管這種重用代碼的方式在某種程度上能提高軟件開發效率,但代碼克隆卻導致軟件Bug(漏洞)的擴散,同時也導致軟件維護難度加大,甚至會觸發許可違規的風險;因此,代碼克隆檢測也隨著軟件的維護和發展變得愈加重要。
目前,已提出許多代碼克隆檢測的方法和工具,這些方法和工具主要可分為三類:基于文本的代碼克隆檢測、基于標記的代碼克隆檢測以及基于樹的代碼克隆檢測。其中,基于文本的代碼克隆檢測工具主要有NiCad Clone Detector,該工具首先對源代碼進行了少量預處理,即格式化和標準化排版,然后通過簡單的文本行比較來對潛在克隆代碼進行動態聚類。基于標記的代碼克隆檢測工具主要有CCFinder和SourcererCC,二者均是在標記的基礎上實現代碼克隆檢測。基于樹的代碼克隆檢測工具主要有DECKARD,通過識別出AST(abstract syntax tree,抽象語法樹)相似的代碼來進行代碼克隆檢測。
上述提供的代碼克隆檢測工具雖然比較實用,但只能通過檢測文本、標記以及樹(語法)級別的相似性來檢測代碼克隆,對于語義相似但語法未必相似的代碼,無法實現語義級別的代碼克隆檢測,存在較大的缺陷。
發明內容
本申請提供一種代碼克隆檢測方法,以解決現有技術存在的缺陷。本申請同時涉及一種代碼克隆檢測裝置,以及一種電子設備。
本申請提供一種代碼克隆檢測方法,包括:
獲取至少兩個版本的源代碼組成的源代碼集;
將所述至少兩個版本的源代碼分別轉換為對應的代碼特征向量;
將所述至少兩個版本的源代碼對應的代碼特征向量輸入集成分類模型進行克隆檢測,獲得克隆檢測結果。
可選的,所述將所述至少兩個版本的源代碼分別轉換為對應的代碼特征向量,包括:
針對所述源代碼集中至少兩個版本的源代碼,執行如下操作:
基于代碼字符語料庫,提取所述源代碼包含的所述代碼字符語料庫中的代碼字符單元;
構建所述代碼字符單元的語義向量;
根據所述代碼字符單元的語義向量生成所述源代碼的語義矩陣;
將所述源代碼的語義矩陣轉換為語義向量,作為所述源代碼對應的代碼特征向量。
可選的,所述集成分類模型,采用如下方式訓練獲得:
獲取原始訓練代碼集中至少兩個版本的訓練源代碼;
將所述至少兩個版本的訓練源代碼分別轉換為對應的訓練特征向量;
利用轉換獲得的至少兩個訓練特征向量進行模型訓練。
可選的,所述利用轉換獲得的至少兩個訓練特征向量進行模型訓練子步驟執行之前,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江大學,未經浙江大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811295180.5/2.html,轉載請聲明來源鉆瓜專利網。





