函數(shù)級別結(jié)構(gòu)化克隆與語義克隆的檢測
發(fā)布時間:2024-02-03 21:18
在軟件開發(fā)階段,開發(fā)人員為了縮短開發(fā)時間、減少開發(fā)成本,經(jīng)常會通過復(fù)制粘貼已有代碼來進(jìn)行軟件開發(fā)任務(wù)。一般地,這種開發(fā)方式被稱為代碼克隆,所使用的重復(fù)代碼被稱為克隆代碼。雖然代碼克隆可以有效地降低軟件開發(fā)的成本,但它可能會對整體軟件的質(zhì)量帶來潛在的威脅,并顯著增加維護(hù)成本。因此,為了保證軟件質(zhì)量,有必要對軟件進(jìn)行代碼克隆檢測。維護(hù)人員可以對檢測到的克隆代碼進(jìn)行重構(gòu),以此來減少軟件中的克隆代碼。為了緩解克隆所造成的軟件質(zhì)量缺陷,現(xiàn)有的研究已經(jīng)提出了許多用于代碼克隆檢測的自動化技術(shù)和工具。在現(xiàn)階段的研究成果中,大部分研究所提出的檢測技術(shù)主要是基于粗粒度的,并主要在前兩類克隆中有較好的表現(xiàn)。然而,結(jié)構(gòu)化克隆和語義克隆對軟件質(zhì)量影響較大,且無論在開發(fā)中和維護(hù)中都較難檢測。并且,考慮到函數(shù)是組成系統(tǒng)的有意義的最小代碼單元,本文嘗試在函數(shù)級別上分別對結(jié)構(gòu)化克隆和語義克隆進(jìn)行檢測,主要取得了以下研究成果:(1)為了在函數(shù)級別有效地檢測軟件中的結(jié)構(gòu)化克隆代碼,本文提出了函數(shù)級別的代碼克隆檢測方法,該方法利用結(jié)構(gòu)相似性來測量函數(shù)級別中代碼片段的相似性。該方法首先通過使用定義的節(jié)點類型而不是原始節(jié)點表示來...
【文章頁數(shù)】:72 頁
【學(xué)位級別】:碩士
【文章目錄】:
摘要
Abstract
1 緒論
1.1 研究背景與意義
1.2 代碼克隆相關(guān)概念及其定義
1.3 代碼克隆產(chǎn)生的原因
1.4 代碼克隆對軟件質(zhì)量的影響
1.4.1 代碼克隆的優(yōu)點
1.4.2 代碼克隆的缺點
1.5 代碼克隆檢測的基本流程
1.5.1 預(yù)處理過程
1.5.2 源碼轉(zhuǎn)化
1.5.3 匹配檢測
1.5.4 克隆代碼樣式表示
1.5.5 后續(xù)處理/過濾
1.5.6 聚類
1.6 本文主要研究思路
1.7 本文的主要研究貢獻(xiàn)和章節(jié)安排
2 相關(guān)工作
2.1 基于文本的檢測方法
2.2 基于token的檢測方法
2.3 基于樹的檢測方法
2.4 基于圖的檢測方法
2.5 基于度量的檢測方法
2.6 基于混合的檢測方法
3 混合方式檢測結(jié)構(gòu)化函數(shù)級別代碼克隆
3.1 引言
3.2 背景和動機
3.2.1 抽象語法樹(AST)
3.2.2 Smith waterman算法
3.3 基于函數(shù)的代碼克隆檢測框架
3.3.1 構(gòu)造增強型的AST
3.3.2 Smith Waterman算法計算相似度得分
3.3.3 代碼克隆檢測
3.4 實驗設(shè)置
3.4.1 實驗平臺
3.4.2 實驗數(shù)據(jù)集
3.4.3 評估指標(biāo)
3.4.4 評估方法
3.5 實驗結(jié)果
3.5.1 參數(shù)影響
3.5.2 算法比較
3.5.3 跨項目代碼克隆檢測
3.6 驗證威脅
3.7 小結(jié)
4 語義克隆檢測
4.1 引言
4.2 背景和動機
4.2.1 相關(guān)研究
4.2.2 paragraph2vec
4.3 語義克隆檢測方法(SCDPV)
4.3.1 獲取代碼中間表示
4.3.2 獲得函數(shù)代碼段向量
4.3.3 語義克隆檢測
4.4 實驗設(shè)置
4.4.1 實驗平臺
4.4.2 實驗數(shù)據(jù)
4.4.3 評估指標(biāo)
4.5 實驗評估
4.5.1 SCDPV性能評估
4.5.2 SCDPV語義克隆檢測性能評估
4.6 驗證威脅
4.7 小結(jié)
結(jié)論
參考文獻(xiàn)
攻讀碩士學(xué)位期間發(fā)表學(xué)術(shù)論文情況
致謝
本文編號:3894698
【文章頁數(shù)】:72 頁
【學(xué)位級別】:碩士
【文章目錄】:
摘要
Abstract
1 緒論
1.1 研究背景與意義
1.2 代碼克隆相關(guān)概念及其定義
1.3 代碼克隆產(chǎn)生的原因
1.4 代碼克隆對軟件質(zhì)量的影響
1.4.1 代碼克隆的優(yōu)點
1.4.2 代碼克隆的缺點
1.5 代碼克隆檢測的基本流程
1.5.1 預(yù)處理過程
1.5.2 源碼轉(zhuǎn)化
1.5.3 匹配檢測
1.5.4 克隆代碼樣式表示
1.5.5 后續(xù)處理/過濾
1.5.6 聚類
1.6 本文主要研究思路
1.7 本文的主要研究貢獻(xiàn)和章節(jié)安排
2 相關(guān)工作
2.1 基于文本的檢測方法
2.2 基于token的檢測方法
2.3 基于樹的檢測方法
2.4 基于圖的檢測方法
2.5 基于度量的檢測方法
2.6 基于混合的檢測方法
3 混合方式檢測結(jié)構(gòu)化函數(shù)級別代碼克隆
3.1 引言
3.2 背景和動機
3.2.1 抽象語法樹(AST)
3.2.2 Smith waterman算法
3.3 基于函數(shù)的代碼克隆檢測框架
3.3.1 構(gòu)造增強型的AST
3.3.2 Smith Waterman算法計算相似度得分
3.3.3 代碼克隆檢測
3.4 實驗設(shè)置
3.4.1 實驗平臺
3.4.2 實驗數(shù)據(jù)集
3.4.3 評估指標(biāo)
3.4.4 評估方法
3.5 實驗結(jié)果
3.5.1 參數(shù)影響
3.5.2 算法比較
3.5.3 跨項目代碼克隆檢測
3.6 驗證威脅
3.7 小結(jié)
4 語義克隆檢測
4.1 引言
4.2 背景和動機
4.2.1 相關(guān)研究
4.2.2 paragraph2vec
4.3 語義克隆檢測方法(SCDPV)
4.3.1 獲取代碼中間表示
4.3.2 獲得函數(shù)代碼段向量
4.3.3 語義克隆檢測
4.4 實驗設(shè)置
4.4.1 實驗平臺
4.4.2 實驗數(shù)據(jù)
4.4.3 評估指標(biāo)
4.5 實驗評估
4.5.1 SCDPV性能評估
4.5.2 SCDPV語義克隆檢測性能評估
4.6 驗證威脅
4.7 小結(jié)
結(jié)論
參考文獻(xiàn)
攻讀碩士學(xué)位期間發(fā)表學(xué)術(shù)論文情況
致謝
本文編號:3894698
本文鏈接:http://www.sikaile.net/kejilunwen/ruanjiangongchenglunwen/3894698.html
最近更新
教材專著