[發明專利]一種基于神經網絡語言模型的重復代碼檢測方法有效
| 申請號: | 201710464437.4 | 申請日: | 2017-06-19 |
| 公開(公告)號: | CN107273294B | 公開(公告)日: | 2020-07-28 |
| 發明(設計)人: | 屈鴻;符明晟;涂強;劉洋軍;張亦洲;王一文;高榕;陳珊 | 申請(專利權)人: | 電子科技大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06N3/02 |
| 代理公司: | 成都弘毅天承知識產權代理有限公司 51230 | 代理人: | 徐金瓊;劉東 |
| 地址: | 611731 四川省成*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 神經網絡 語言 模型 重復 代碼 檢測 方法 | ||
本發明公開了一種基于神經網絡語言模型的重復代碼檢測方法,屬于重復代碼檢測方法技術領域,解決現有技術中的重復代碼檢測方法,不能檢測出沒有進行本質性改變的重復代碼,造成檢測的準確率,容易給代碼原創者造成經濟損失等問題。本發明包括步驟1:將所有的代碼中的每個代碼轉換為相應的CFG圖;步驟2:抽取每個CFG圖中每一個結點的根子圖;步驟3:將所有根子圖采用向量表示;步驟4:將根子圖的向量表示輸入到深度圖核函數中學習,得到所有CFG圖兩兩間的相似度;步驟5:將CFG圖兩兩間的相似度輸入到AP關聯聚類算法中進行CFG圖的聚類得到多個聚類簇,在同一個聚類簇中的CFG圖所對應的代碼即為重復代碼。本發明用于發現重復代碼。
技術領域
一種基于神經網絡語言模型的重復代碼檢測方法,用于發現重復代碼,屬于重復代碼檢測方法技術領域。
背景技術
站在軟件工程的角度來說,對于代碼克隆可以分為三種類型。第一種是由于代碼重復使用而引入的,這去除了軟件開發中的一些重復性工作,這些代碼體現了軟件的良好設計。第二種重復代碼可能會導致軟件的bug,例如在復制的代碼中忘記或是錯誤地修改了函數名或是變量名。第三種重復代碼雖然不會直接引發代碼bug,但會對軟件后期的可維護性產生重大的影響。例如在MVC模式下進行系統設計時,如果有兩個子系統間存在著重復代碼,這意味著不滿足MVC分層、獨立的要求。如果要對其中的一個子系統進行修改,則需要重新編譯另一個子系統。因此這種跨越多個不同功能子系統的重復代碼會對系統的可維護性產生嚴重的危害。
對于代碼的重復檢測任務,可以從幾個角度上進行,例如可以從代碼文本的角度進行分析。如果只是從文本的角度上進行分析,那么只需要對函數名、變量名稍加修改,就可以得到完全不一樣的代碼,但是從本質上來說并沒有任何改變。而代碼的本質,就是一個過程的執行流,可以使用控制流圖進行表示。現有技術中的重復代碼檢測方法,不能檢測出沒有進行本質性改變的重復代碼,造成檢測的準確率,容易給代碼原創者造成經濟損失等問題。
發明內容
本發明的目的在于:解決現有技術中的重復代碼檢測方法,不能檢測出沒有進行本質性改變的重復代碼,造成檢測的準確率,容易給代碼原創者造成經濟損失等問題,提供了一種基于神經網絡語言模型的重復代碼檢測方法。
本發明采用的技術方案如下:
一種基于神經網絡語言模型的重復代碼檢測方法,其特征在于:包括以下步驟:
步驟1:將所有的代碼中的每個代碼轉換為相應的CFG圖;
步驟2:抽取每個CFG圖中每一個結點的根子圖;
步驟3:將所有根子圖采用向量表示;
步驟4:將根子圖的向量表示輸入到深度圖核函數中學習,得到所有CFG圖兩兩間的相似度;
步驟5:將CFG圖兩兩間的相似度輸入到AP關聯聚類算法中進行CFG圖的聚類得到多個聚類簇,在同一個聚類簇中的CFG圖所對應的代碼即為重復代碼。
進一步,所述步驟2的步驟如下:
步驟21:給定CFG圖中每一個結點v要抽取的根子圖的度d,若d=0,表示并不需要抽取根子圖,否則轉到步驟22;
步驟22:利用廣度優先搜索算法獲得結點v的所有鄰居結點;
步驟23:對于結點v的每一個鄰居結點v'n,獲取其度為d-1的鄰居子圖,并將鄰居子圖保存在一個列表中,其中,d度鄰居子圖指的是與結點v距離為d的結點所構成的子圖,與根節點距離為d的結點并不需要都出現在根節點的d度鄰居子圖中,即根節點的d度鄰居子圖可以有多個;
步驟24:獲取結點v的度為d-1的鄰居子圖,將其與中相同的鄰居子圖進行連接,即得到了所需要的根子圖
進一步,所述步驟3的步驟如下:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于電子科技大學,未經電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710464437.4/2.html,轉載請聲明來源鉆瓜專利網。





