基于非精確圖匹配的代碼克隆檢測(cè)方法研究
發(fā)布時(shí)間:2023-05-24 22:23
近年來,代碼克隆檢測(cè)在軟件開發(fā),維護(hù)以及bug檢測(cè)中的意義越來越重要。目前對(duì)于存在文本差異的克隆檢測(cè),即學(xué)術(shù)界定義的級(jí)別3和級(jí)別4,現(xiàn)有方法存在檢出率不高的問題。程序依賴圖(PDG,Program Dependency Graph)包含源代碼的語法和結(jié)構(gòu)信息,因此基于PDG的方法能夠發(fā)現(xiàn)一些其他方法難以發(fā)現(xiàn)的程序結(jié)構(gòu)相似或者相同的代碼。但是這類方法主要基于子圖同構(gòu)檢測(cè)等精確圖匹配算法,算法復(fù)雜度高且無法發(fā)現(xiàn)代碼之間存在的局部相似性。因此,如何更快速,全面和準(zhǔn)確地進(jìn)行圖相似性計(jì)算是基于PDG進(jìn)行代碼克隆檢測(cè)面臨的一大挑戰(zhàn)。為此,本文首先對(duì)PDG對(duì)集合進(jìn)行了本身結(jié)構(gòu)的簡(jiǎn)化和過濾,并對(duì)非精確圖匹配算法進(jìn)行了深入研究,主要研究?jī)?nèi)容和貢獻(xiàn)如下:(1)PDG預(yù)處理及過濾方法設(shè)計(jì)我們對(duì)代碼分析工具生成的PDG進(jìn)行了研究和分析,發(fā)現(xiàn)其中包含很多由于PDG生成工具配置而生成的與源代碼信息無關(guān)的冗余節(jié)點(diǎn),造成了 PDG規(guī)模的增加,影響后續(xù)的節(jié)點(diǎn)匹配工作;诖,本文提出了一種PDG結(jié)構(gòu)簡(jiǎn)化的啟發(fā)式策略,對(duì)這些節(jié)點(diǎn)和邊進(jìn)行了剔除,并對(duì)代碼塊中第三方庫(kù)函數(shù)調(diào)用的冗余子圖進(jìn)行了合并。另外,對(duì)所有的候選克隆對(duì)直接...
【文章頁(yè)數(shù)】:81 頁(yè)
【學(xué)位級(jí)別】:碩士
【文章目錄】:
摘要
ABSTRACT
第1章 緒論
1.1 研究背景及意義
1.2 研究現(xiàn)狀和發(fā)展趨勢(shì)
1.2.1 基于文本/Token的代碼克隆檢測(cè)方法
1.2.2 基于語法結(jié)構(gòu)的代碼克隆檢測(cè)方法
1.2.3 基于特征的代碼克隆檢測(cè)方法
1.2.4 基于機(jī)器學(xué)習(xí)的代碼克隆檢測(cè)方法
1.2.5 其他代碼克隆檢測(cè)方法
1.3 本文研究工作
1.3.1 PDG的預(yù)處理及過濾方法設(shè)計(jì)
1.3.2 基于WL圖核的代碼克隆檢測(cè)方法設(shè)計(jì)
1.4 論文組織
第2章 問題定義及相關(guān)工作
2.1 預(yù)備知識(shí)
2.1.1 代碼表示形式
2.1.2 代碼克隆相關(guān)概念
2.1.3 非精確圖匹配算法
2.2 問題定義
2.2.1 一般代碼克隆檢測(cè)定義
2.2.2 PDG代碼克隆檢測(cè)定義
2.3 現(xiàn)有PDG克隆檢測(cè)方法
2.3.1 基于子圖同構(gòu)的PDG克隆檢測(cè)方法
2.3.2 基于程序切片的PDG克隆檢測(cè)方法
2.3.3 基于深度學(xué)習(xí)的PDG克隆檢測(cè)方法
2.4 本章小結(jié)
第3章 PDG預(yù)處理及過濾方法設(shè)計(jì)與實(shí)現(xiàn)
3.1 問題分析
3.1.1 問題描述
3.1.2 解決思路
3.2 PDG約簡(jiǎn)及過濾方法設(shè)計(jì)
3.2.1 PDG的生成及數(shù)據(jù)格式
3.2.2 PDG的結(jié)構(gòu)約簡(jiǎn)
3.2.3 PDG對(duì)初始集合的過濾
3.3 實(shí)驗(yàn)結(jié)果與分析
3.3.1 數(shù)據(jù)集及評(píng)估指標(biāo)
3.3.2 PDG結(jié)構(gòu)約簡(jiǎn)實(shí)驗(yàn)
3.3.3 PDG對(duì)初始集合過濾實(shí)驗(yàn)
3.4 本章小結(jié)
第4章 基于WL圖核的克隆檢測(cè)方法設(shè)計(jì)與實(shí)現(xiàn)
4.1 問題分析
4.1.1 問題描述
4.1.2 解決思路
4.2 基于Weisfeiler-Lehman圖核算法的克隆檢測(cè)
4.2.1 PDG中標(biāo)簽數(shù)值化
4.2.2 PDG對(duì)相似度計(jì)算
4.2.3 PDG克隆對(duì)判定
4.3 實(shí)驗(yàn)結(jié)果與分析
4.3.1 數(shù)據(jù)集及評(píng)估指標(biāo)
4.3.2 代碼克隆檢測(cè)實(shí)驗(yàn)結(jié)果及分析
4.4 本章小結(jié)
第5章 總結(jié)
5.1 本文工作
5.2 本文貢獻(xiàn)與創(chuàng)新之處
5.3 下一步工作
參考文獻(xiàn)
致謝
在讀期間發(fā)表的學(xué)術(shù)論文與取得的研究成果
攻讀學(xué)位期間參加的科研項(xiàng)目
本文編號(hào):3822395
【文章頁(yè)數(shù)】:81 頁(yè)
【學(xué)位級(jí)別】:碩士
【文章目錄】:
摘要
ABSTRACT
第1章 緒論
1.1 研究背景及意義
1.2 研究現(xiàn)狀和發(fā)展趨勢(shì)
1.2.1 基于文本/Token的代碼克隆檢測(cè)方法
1.2.2 基于語法結(jié)構(gòu)的代碼克隆檢測(cè)方法
1.2.3 基于特征的代碼克隆檢測(cè)方法
1.2.4 基于機(jī)器學(xué)習(xí)的代碼克隆檢測(cè)方法
1.2.5 其他代碼克隆檢測(cè)方法
1.3 本文研究工作
1.3.1 PDG的預(yù)處理及過濾方法設(shè)計(jì)
1.3.2 基于WL圖核的代碼克隆檢測(cè)方法設(shè)計(jì)
1.4 論文組織
第2章 問題定義及相關(guān)工作
2.1 預(yù)備知識(shí)
2.1.1 代碼表示形式
2.1.2 代碼克隆相關(guān)概念
2.1.3 非精確圖匹配算法
2.2 問題定義
2.2.1 一般代碼克隆檢測(cè)定義
2.2.2 PDG代碼克隆檢測(cè)定義
2.3 現(xiàn)有PDG克隆檢測(cè)方法
2.3.1 基于子圖同構(gòu)的PDG克隆檢測(cè)方法
2.3.2 基于程序切片的PDG克隆檢測(cè)方法
2.3.3 基于深度學(xué)習(xí)的PDG克隆檢測(cè)方法
2.4 本章小結(jié)
第3章 PDG預(yù)處理及過濾方法設(shè)計(jì)與實(shí)現(xiàn)
3.1 問題分析
3.1.1 問題描述
3.1.2 解決思路
3.2 PDG約簡(jiǎn)及過濾方法設(shè)計(jì)
3.2.1 PDG的生成及數(shù)據(jù)格式
3.2.2 PDG的結(jié)構(gòu)約簡(jiǎn)
3.2.3 PDG對(duì)初始集合的過濾
3.3 實(shí)驗(yàn)結(jié)果與分析
3.3.1 數(shù)據(jù)集及評(píng)估指標(biāo)
3.3.2 PDG結(jié)構(gòu)約簡(jiǎn)實(shí)驗(yàn)
3.3.3 PDG對(duì)初始集合過濾實(shí)驗(yàn)
3.4 本章小結(jié)
第4章 基于WL圖核的克隆檢測(cè)方法設(shè)計(jì)與實(shí)現(xiàn)
4.1 問題分析
4.1.1 問題描述
4.1.2 解決思路
4.2 基于Weisfeiler-Lehman圖核算法的克隆檢測(cè)
4.2.1 PDG中標(biāo)簽數(shù)值化
4.2.2 PDG對(duì)相似度計(jì)算
4.2.3 PDG克隆對(duì)判定
4.3 實(shí)驗(yàn)結(jié)果與分析
4.3.1 數(shù)據(jù)集及評(píng)估指標(biāo)
4.3.2 代碼克隆檢測(cè)實(shí)驗(yàn)結(jié)果及分析
4.4 本章小結(jié)
第5章 總結(jié)
5.1 本文工作
5.2 本文貢獻(xiàn)與創(chuàng)新之處
5.3 下一步工作
參考文獻(xiàn)
致謝
在讀期間發(fā)表的學(xué)術(shù)論文與取得的研究成果
攻讀學(xué)位期間參加的科研項(xiàng)目
本文編號(hào):3822395
本文鏈接:http://sikaile.net/shoufeilunwen/xixikjs/3822395.html
最近更新
教材專著