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