基于集成學習技術(shù)的代碼克隆檢測方法研究
發(fā)布時間:2021-11-25 05:03
代碼克隆指的是相似代碼片段在軟件系統(tǒng)多處出現(xiàn)。它通常因開發(fā)者的復制習慣或設計理念產(chǎn)生,往往導致軟件系統(tǒng)難以維護。如何自動化、快速而有效地定位這些相似代碼以便更好地重構(gòu)和維護軟件是一項研究熱點。傳統(tǒng)的代碼克隆檢測方法大多基于靜態(tài)文本分析技術(shù),很難在語義相近的代碼克隆檢測上有好的表現(xiàn)。而實際上中大型軟件系統(tǒng)中占大比例的正是這些語義克隆。近兩年有幾種結(jié)合深度神經(jīng)網(wǎng)絡模型的算法在代碼語義克隆檢測上取得了不錯的效果,但是深度神經(jīng)網(wǎng)絡模型參數(shù)太復雜使得訓練開銷特別大。本文提出了基于集成學習的有監(jiān)督分類模型,利用多個弱分類器捕捉可能的相似模式。同時配合有效的特征工程技巧,進一步挖掘代碼的語法和潛藏的語義信息,實現(xiàn)高準確度和高效率的檢測效果。本文主要工作和創(chuàng)新點有:(1)使用弱分類器和集成學習方法來解決代碼克隆檢測問題,實現(xiàn)了很好的重復代碼檢測效果,效率優(yōu)于現(xiàn)有深度學習方法。(2)將詞嵌入模型用于特征工程方法,將源代碼視作有上下文邏輯的文檔,利用詞嵌入模型抽取代碼段的向量表示形式。對源代碼結(jié)構(gòu)沒有過多的中間形式轉(zhuǎn)換,保留了代碼的完整信息。本文在BigCloneBench數(shù)據(jù)集上設計了一系列實驗,用于驗...
【文章來源】:浙江大學浙江省 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:82 頁
【學位級別】:碩士
【部分圖文】:
圖1.3不同類型代碼克。郏常??
is?condensed?to??if(code&pcObjType)?{??圖2.1源代碼的預處理[|<)]??轉(zhuǎn)換后的代碼每行都與其他行分別比較,比較時代碼的相似度通過文本匹配??算法來得出?蛇x用的經(jīng)典文本匹配算法包括布魯特包里搜索算法、萊溫斯坦距??離算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。該技術(shù)還利用分塊思想在算法原本0(iV2:)級別的復雜度上做了優(yōu)化。??即先將預處理的代碼計算一個hash碼,然后按hash碼的值將代碼分到不同的桶??(bucket)中,因為文本一致的代碼其hash碼值相同,只需要在桶內(nèi)進行兩兩匹??配就能檢測出所有文本一致的代碼克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一項能??檢測不同相似程度代碼克隆的方法。它的核心思想是給定一個參考代碼的文本序??列和一個間隔閾值N
is?condensed?to??if(code&pcObjType)?{??圖2.1源代碼的預處理[|<)]??轉(zhuǎn)換后的代碼每行都與其他行分別比較,比較時代碼的相似度通過文本匹配??算法來得出。可選用的經(jīng)典文本匹配算法包括布魯特包里搜索算法、萊溫斯坦距??離算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。該技術(shù)還利用分塊思想在算法原本0(iV2:)級別的復雜度上做了優(yōu)化。??即先將預處理的代碼計算一個hash碼,然后按hash碼的值將代碼分到不同的桶??(bucket)中,因為文本一致的代碼其hash碼值相同,只需要在桶內(nèi)進行兩兩匹??配就能檢測出所有文本一致的代碼克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一項能??檢測不同相似程度代碼克隆的方法。它的核心思想是給定一個參考代碼的文本序??列和一個間隔閾值N
本文編號:3517457
【文章來源】:浙江大學浙江省 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:82 頁
【學位級別】:碩士
【部分圖文】:
圖1.3不同類型代碼克。郏常??
is?condensed?to??if(code&pcObjType)?{??圖2.1源代碼的預處理[|<)]??轉(zhuǎn)換后的代碼每行都與其他行分別比較,比較時代碼的相似度通過文本匹配??算法來得出?蛇x用的經(jīng)典文本匹配算法包括布魯特包里搜索算法、萊溫斯坦距??離算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。該技術(shù)還利用分塊思想在算法原本0(iV2:)級別的復雜度上做了優(yōu)化。??即先將預處理的代碼計算一個hash碼,然后按hash碼的值將代碼分到不同的桶??(bucket)中,因為文本一致的代碼其hash碼值相同,只需要在桶內(nèi)進行兩兩匹??配就能檢測出所有文本一致的代碼克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一項能??檢測不同相似程度代碼克隆的方法。它的核心思想是給定一個參考代碼的文本序??列和一個間隔閾值N
is?condensed?to??if(code&pcObjType)?{??圖2.1源代碼的預處理[|<)]??轉(zhuǎn)換后的代碼每行都與其他行分別比較,比較時代碼的相似度通過文本匹配??算法來得出。可選用的經(jīng)典文本匹配算法包括布魯特包里搜索算法、萊溫斯坦距??離算法、Boyer-Moore字符串搜索算法、Boyer-Moore字符串搜索算法和Rabin-??Karp算法等。該技術(shù)還利用分塊思想在算法原本0(iV2:)級別的復雜度上做了優(yōu)化。??即先將預處理的代碼計算一個hash碼,然后按hash碼的值將代碼分到不同的桶??(bucket)中,因為文本一致的代碼其hash碼值相同,只需要在桶內(nèi)進行兩兩匹??配就能檢測出所有文本一致的代碼克隆。??2005?年?S?Lee?等人提出?SSD?(Similar?Data?Detection)算法[11]。它是一項能??檢測不同相似程度代碼克隆的方法。它的核心思想是給定一個參考代碼的文本序??列和一個間隔閾值N
本文編號:3517457
本文鏈接:http://www.sikaile.net/kejilunwen/ruanjiangongchenglunwen/3517457.html
最近更新
教材專著