基于LLVM克隆代碼檢測關(guān)鍵技術(shù)研究
發(fā)布時間:2022-02-22 10:25
在代碼開發(fā)過程中需求的快速變化導(dǎo)致代碼實現(xiàn)的周期較短。代碼的復(fù)制、粘貼、模仿等操作已成為加快軟件開發(fā)周期的普遍方式。盡管克隆代碼為開發(fā)者提供便利,但也因此降低程序的可維護(hù)性。研究克隆代碼檢測技術(shù)在代碼開發(fā)、代碼維護(hù)、缺陷查找、軟件權(quán)益保護(hù)等多個方面都有顯著的意義。在實際應(yīng)用中,常用代碼克隆檢測方法包括:文本對比法、token序列對比法、索引序列匹配法、后綴樹與前綴樹檢測法、抽象語法樹距離檢測法、基于程序依賴圖的檢測法等。其中程序依賴圖檢測方法具有分析全面,精確度高的特點。但其匹配成本較高、匹配信息量大,因而不適用于大規(guī)模代碼的檢測。本文在傳統(tǒng)檢測方法的研究基礎(chǔ)上,提出新的基于LLVM依賴圖的克隆代碼檢測方法。本文主要工作包括:(1)結(jié)合LLVM IR代碼粒度較細(xì)的特性,提出將LLVM復(fù)雜程序依賴圖簡化成為簡單依賴圖的方法,旨在將LLVM依賴圖轉(zhuǎn)化成為與語句依賴圖同一級別的簡單依賴圖,作為所有操作與分析的基礎(chǔ)。(2)基于上述生成的簡單依賴圖,本文提出分割簡單依賴圖并以分割后產(chǎn)生的分片獲取克隆代碼段的方法。該方法固定匹配的范圍,選取匹配依據(jù),設(shè)計并行算法,提升了程序依賴圖克隆檢測方法的匹配...
【文章來源】:南京郵電大學(xué)江蘇省
【文章頁數(shù)】:59 頁
【學(xué)位級別】:碩士
【文章目錄】:
摘要
abstract
第一章 緒論
1.1 發(fā)展趨勢
1.2 國內(nèi)外研究現(xiàn)狀
1.3 實際意義與研究目的
1.4 研究內(nèi)容及創(chuàng)新點
1.5 論文結(jié)構(gòu)及安排
第二章 基本概念
2.1 程序切片介紹
2.1.1 靜態(tài)程序切片介紹
2.1.2 動態(tài)程序切片介紹
2.1.3 程序依賴圖
2.1.4 系統(tǒng)依賴圖
2.2 LLVMIR相關(guān)知識
2.3 常用代碼克隆檢測技術(shù)
2.3.1 基于文本的克隆代碼檢測
2.3.2 基于樹的克隆代碼檢測
2.3.3 基于圖的克隆代碼檢測
2.4 機器學(xué)習(xí)的基本概念
2.4.1 TensorFlow
2.4.2 Sklearn
2.5 本章小結(jié)
第三章 基于簡單依賴圖的代碼匹配方法
3.1 引言
3.2 LLVMIR語法結(jié)構(gòu)
3.3 語句程序依賴圖與LLVM依賴圖的對比
3.4 LLVM依賴圖變更分析
3.4.1 添加注釋
3.4.2 交換語句
3.4.3 增加可執(zhí)行語句
3.4.4 增加不執(zhí)行語句
3.5 簡單依賴圖
3.6 基于簡單依賴圖的分割方法
3.6.1 策略分析
3.7 基于簡單依賴圖的匹配方法
3.7.1 對比點匹配策略
3.7.2 相似度計算策略
3.8 代碼匹配的增量更新方法
3.8.1 行號映射
3.8.2 標(biāo)準(zhǔn)依賴圖和待檢測依賴圖的區(qū)別
3.9 本章小結(jié)
第四章 基于簡單依賴圖的合并方法
4.1 引言
4.2 簡化復(fù)雜依賴圖
4.2.1 簡單依賴圖的基本操作
4.3 克隆代碼的合并策略
4.3.1 基于簡化圖結(jié)構(gòu)的合并策略
4.4 相似度閾值的自動設(shè)置
4.4.1 提取特征向量
4.4.2 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型
4.4.3 線性回歸模型
4.5 本章小結(jié)
第五章 實驗驗證
5.1 引言
5.2 克隆檢測模型參數(shù)實驗驗證
5.3 并行架構(gòu)實驗驗證
5.3.1 匹配與簡化的并行實驗驗證
5.3.2 簡化流程并行實驗驗證
5.4 克隆檢測模型對比實驗驗證
5.5 本章小節(jié)
第六章 總結(jié)與展望
6.1 工作總結(jié)
6.2 未來工作展望
參考文獻(xiàn)
附錄1 程序清單
附錄2 攻讀碩士學(xué)位期間申請的專利
致謝
【參考文獻(xiàn)】:
期刊論文
[1]面向管理的克隆代碼研究綜述[J]. 蘇小紅,張凡龍. 計算機學(xué)報. 2018(03)
[2]基于復(fù)用代碼檢測的缺陷發(fā)現(xiàn)方法[J]. 常超,劉克勝,趙軍,黃寧. 系統(tǒng)工程與電子技術(shù). 2017(09)
[3]基于bugs的克隆代碼穩(wěn)定性評估方法[J]. 趙玉武,翟曄,劉東升. 計算機應(yīng)用研究. 2017(04)
[4]基于索引的分布式代碼克隆檢測[J]. 林嬋,李俊杰,饒飛,羅平. 信息安全研究. 2016(03)
[5]基于Token編輯距離檢測克隆代碼[J]. 張久杰,王春暉,張麗萍,侯敏,劉東升. 計算機應(yīng)用. 2015(12)
[6]一種基于特征矩陣的軟件脆弱性代碼克隆檢測方法[J]. 甘水滔,秦曉軍,陳左寧,王林章. 軟件學(xué)報. 2015(02)
[7]Hadoop集群下的并行克隆代碼檢測[J]. 葉林,姚國祥. 微型機與應(yīng)用. 2014(02)
[8]基于代碼克隆檢測技術(shù)的Android應(yīng)用重打包檢測[J]. 王浩宇,王仲禹,郭耀,陳向群. 中國科學(xué):信息科學(xué). 2014(01)
[9]大規(guī)模代碼克隆的檢測方法[J]. 郭穎,陳峰宏,周明輝. 計算機科學(xué)與探索. 2014(04)
[10]基于分組的代碼克隆增量檢測方法[J]. 王海,林云,彭鑫,趙文耘. 計算機科學(xué)與探索. 2014(04)
博士論文
[1]代碼克隆擴展分析及管理技術(shù)研究[D]. 張剛.復(fù)旦大學(xué) 2013
碩士論文
[1]Pyreview:一個基于抽象語法樹差異提取的Python源代碼分析工具[D]. 李清言.南京大學(xué) 2016
[2]基于索引和序列匹配的代碼克隆檢測技術(shù)研究[D]. 舒翔.杭州電子科技大學(xué) 2015
[3]大型軟件系統(tǒng)維護(hù)中代碼克隆的質(zhì)量分析和提升[D]. 王楚礎(chǔ).復(fù)旦大學(xué) 2013
[4]基于支持向量機的克隆代碼有害性評價方法研究[D]. 李智超.哈爾濱工業(yè)大學(xué) 2013
[5]基于后綴數(shù)組的克隆代碼檢測研究[D]. 史慶慶.內(nèi)蒙古師范大學(xué) 2013
[6]基于抽象語法樹的程序代碼抄襲檢測技術(shù)研究[D]. 趙彥博.內(nèi)蒙古師范大學(xué) 2010
[7]基于序列匹配的代碼克隆分析系統(tǒng)設(shè)計與實現(xiàn)[D]. 辛天卿.大連理工大學(xué) 2009
[8]Java代碼相似性判定方法的研究[D]. 王冠.北京工業(yè)大學(xué) 2008
本文編號:3639263
【文章來源】:南京郵電大學(xué)江蘇省
【文章頁數(shù)】:59 頁
【學(xué)位級別】:碩士
【文章目錄】:
摘要
abstract
第一章 緒論
1.1 發(fā)展趨勢
1.2 國內(nèi)外研究現(xiàn)狀
1.3 實際意義與研究目的
1.4 研究內(nèi)容及創(chuàng)新點
1.5 論文結(jié)構(gòu)及安排
第二章 基本概念
2.1 程序切片介紹
2.1.1 靜態(tài)程序切片介紹
2.1.2 動態(tài)程序切片介紹
2.1.3 程序依賴圖
2.1.4 系統(tǒng)依賴圖
2.2 LLVMIR相關(guān)知識
2.3 常用代碼克隆檢測技術(shù)
2.3.1 基于文本的克隆代碼檢測
2.3.2 基于樹的克隆代碼檢測
2.3.3 基于圖的克隆代碼檢測
2.4 機器學(xué)習(xí)的基本概念
2.4.1 TensorFlow
2.4.2 Sklearn
2.5 本章小結(jié)
第三章 基于簡單依賴圖的代碼匹配方法
3.1 引言
3.2 LLVMIR語法結(jié)構(gòu)
3.3 語句程序依賴圖與LLVM依賴圖的對比
3.4 LLVM依賴圖變更分析
3.4.1 添加注釋
3.4.2 交換語句
3.4.3 增加可執(zhí)行語句
3.4.4 增加不執(zhí)行語句
3.5 簡單依賴圖
3.6 基于簡單依賴圖的分割方法
3.6.1 策略分析
3.7 基于簡單依賴圖的匹配方法
3.7.1 對比點匹配策略
3.7.2 相似度計算策略
3.8 代碼匹配的增量更新方法
3.8.1 行號映射
3.8.2 標(biāo)準(zhǔn)依賴圖和待檢測依賴圖的區(qū)別
3.9 本章小結(jié)
第四章 基于簡單依賴圖的合并方法
4.1 引言
4.2 簡化復(fù)雜依賴圖
4.2.1 簡單依賴圖的基本操作
4.3 克隆代碼的合并策略
4.3.1 基于簡化圖結(jié)構(gòu)的合并策略
4.4 相似度閾值的自動設(shè)置
4.4.1 提取特征向量
4.4.2 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型
4.4.3 線性回歸模型
4.5 本章小結(jié)
第五章 實驗驗證
5.1 引言
5.2 克隆檢測模型參數(shù)實驗驗證
5.3 并行架構(gòu)實驗驗證
5.3.1 匹配與簡化的并行實驗驗證
5.3.2 簡化流程并行實驗驗證
5.4 克隆檢測模型對比實驗驗證
5.5 本章小節(jié)
第六章 總結(jié)與展望
6.1 工作總結(jié)
6.2 未來工作展望
參考文獻(xiàn)
附錄1 程序清單
附錄2 攻讀碩士學(xué)位期間申請的專利
致謝
【參考文獻(xiàn)】:
期刊論文
[1]面向管理的克隆代碼研究綜述[J]. 蘇小紅,張凡龍. 計算機學(xué)報. 2018(03)
[2]基于復(fù)用代碼檢測的缺陷發(fā)現(xiàn)方法[J]. 常超,劉克勝,趙軍,黃寧. 系統(tǒng)工程與電子技術(shù). 2017(09)
[3]基于bugs的克隆代碼穩(wěn)定性評估方法[J]. 趙玉武,翟曄,劉東升. 計算機應(yīng)用研究. 2017(04)
[4]基于索引的分布式代碼克隆檢測[J]. 林嬋,李俊杰,饒飛,羅平. 信息安全研究. 2016(03)
[5]基于Token編輯距離檢測克隆代碼[J]. 張久杰,王春暉,張麗萍,侯敏,劉東升. 計算機應(yīng)用. 2015(12)
[6]一種基于特征矩陣的軟件脆弱性代碼克隆檢測方法[J]. 甘水滔,秦曉軍,陳左寧,王林章. 軟件學(xué)報. 2015(02)
[7]Hadoop集群下的并行克隆代碼檢測[J]. 葉林,姚國祥. 微型機與應(yīng)用. 2014(02)
[8]基于代碼克隆檢測技術(shù)的Android應(yīng)用重打包檢測[J]. 王浩宇,王仲禹,郭耀,陳向群. 中國科學(xué):信息科學(xué). 2014(01)
[9]大規(guī)模代碼克隆的檢測方法[J]. 郭穎,陳峰宏,周明輝. 計算機科學(xué)與探索. 2014(04)
[10]基于分組的代碼克隆增量檢測方法[J]. 王海,林云,彭鑫,趙文耘. 計算機科學(xué)與探索. 2014(04)
博士論文
[1]代碼克隆擴展分析及管理技術(shù)研究[D]. 張剛.復(fù)旦大學(xué) 2013
碩士論文
[1]Pyreview:一個基于抽象語法樹差異提取的Python源代碼分析工具[D]. 李清言.南京大學(xué) 2016
[2]基于索引和序列匹配的代碼克隆檢測技術(shù)研究[D]. 舒翔.杭州電子科技大學(xué) 2015
[3]大型軟件系統(tǒng)維護(hù)中代碼克隆的質(zhì)量分析和提升[D]. 王楚礎(chǔ).復(fù)旦大學(xué) 2013
[4]基于支持向量機的克隆代碼有害性評價方法研究[D]. 李智超.哈爾濱工業(yè)大學(xué) 2013
[5]基于后綴數(shù)組的克隆代碼檢測研究[D]. 史慶慶.內(nèi)蒙古師范大學(xué) 2013
[6]基于抽象語法樹的程序代碼抄襲檢測技術(shù)研究[D]. 趙彥博.內(nèi)蒙古師范大學(xué) 2010
[7]基于序列匹配的代碼克隆分析系統(tǒng)設(shè)計與實現(xiàn)[D]. 辛天卿.大連理工大學(xué) 2009
[8]Java代碼相似性判定方法的研究[D]. 王冠.北京工業(yè)大學(xué) 2008
本文編號:3639263
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3639263.html
最近更新
教材專著