基于程序依賴(lài)圖的代碼克隆檢測(cè)算法研究
【學(xué)位單位】:中國(guó)科學(xué)技術(shù)大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位年份】:2018
【中圖分類(lèi)】:TP311.5
【部分圖文】:
1.2.2基于token的代碼克隆檢測(cè)技術(shù)??基于token的代碼克隆檢測(cè)方法首先將整個(gè)源系統(tǒng)代碼通過(guò)詞法解析工具轉(zhuǎn)??化為token序列。源碼經(jīng)過(guò)轉(zhuǎn)化后得到的一個(gè)個(gè)單詞即稱(chēng)為token,如圖1.1。接??著掃描轉(zhuǎn)化后的token序列以尋找相似或者相同的token子序列,子序列對(duì)應(yīng)的??原代碼的部分就被報(bào)為克隆代碼。對(duì)比于基于文本的方法,基于token的方法對(duì)??于檢測(cè)具有不同格式的代碼通常更有魯棒性。??先進(jìn)的基于token的代碼克隆檢測(cè)技術(shù)很多如CP-Miner[11],CCFinder[1()^??等,其中日本的Kamiya等人發(fā)表的CCFinder工具的做法如下:首先通過(guò)一個(gè)詞??法解析工具將所有源碼文件的每一行代碼都轉(zhuǎn)化為一個(gè)個(gè)的token并將所有文件??的token連接合并為一個(gè)單一的token序列。然后針對(duì)所感興趣語(yǔ)言標(biāo)識(shí)符的結(jié)??構(gòu)和標(biāo)準(zhǔn)化方法對(duì)合并的大token序列做一些token的增加,刪除和改變的變換。??變化的目的是將標(biāo)識(shí)符包括類(lèi)型,變量及常量都替換成特殊的^1^11。這樣的標(biāo)??識(shí)符替換方法使得那些僅是變量名不同的代碼塊也可以被檢測(cè)為克隆代碼對(duì)。接??著,用一個(gè)基于子字符串的后綴樹(shù)匹配算法在變化后的token序列中尋找相似的??子序列
圖2.1控制流程圖(CFG)??表2.1集¥?S中所有邊的控制¥賴(lài)關(guān)系S中的邊?控制依賴(lài)于?標(biāo)簽??1?T1?F2?T2?F??3??T系??數(shù)據(jù)依賴(lài)子圖的構(gòu)造過(guò)程中,圖中節(jié)點(diǎn)所表個(gè)運(yùn)算符級(jí)別的子圖。這種子圖在沒(méi)有由調(diào)用所帶來(lái)的副作用時(shí)幾乎非常容易構(gòu)建。
不管針對(duì)什么樣的語(yǔ)言做的檢測(cè),使用什么樣的PDG生成工具和應(yīng)用什么??樣的克隆尋找和判定算法,絕大多數(shù)的方法都有著總體相似的代碼克隆檢測(cè)流??程。在圖2.2中,我們給出了?PDG代碼克隆檢測(cè)方法流程中的重要環(huán)節(jié)或步驟,??其中虛線部分表示在一些早期工作或是小規(guī)模數(shù)據(jù)集上的工作中并沒(méi)有考慮的??降低克隆比較空間的步驟,但是在實(shí)際的代碼克隆檢測(cè)過(guò)程中這卻是非常重要和??實(shí)際需要考慮的內(nèi)容。??,一'、?i?:?r—^^??、__乂通過(guò)生成?丨降低克。?PDG對(duì)的?、^??源代——^工具產(chǎn)生——比較空間;——^克隆判定——^克隆??碼?源碼的?i以減低時(shí);?及克隆的?t結(jié)果??^>?PDG?丨間消耗?丨?聚類(lèi)?^^??\?J??」?V?J??圖2.2?PDG代碼克隆檢測(cè)的流程??基于PDG代碼克隆檢測(cè)方法的總體流程主要包括三個(gè)重要的步驟,分別如??下:??(1)?PDG生成:源代碼中的程序語(yǔ)句作為一種高級(jí)抽象的邏輯和運(yùn)算表示??并不能很好的簡(jiǎn)單被機(jī)器理解和支持。在代碼的編譯運(yùn)行的過(guò)程中,是先將高級(jí)??語(yǔ)言通過(guò)各種編譯器轉(zhuǎn)化成計(jì)算機(jī)可以支持的匯編代碼或機(jī)器指令,再生成相應(yīng)??的二進(jìn)制可執(zhí)行代碼運(yùn)行的。相似地,在代碼克隆檢測(cè)方法中也首先需要將這些??高級(jí)語(yǔ)言轉(zhuǎn)化成較容易理解和處理的形式。在基于PDG的方法中
【相似文獻(xiàn)】
相關(guān)期刊論文 前10條
1 張春英;張雪;;不確定屬性圖的子圖同構(gòu)及其判定算法[J];計(jì)算機(jī)科學(xué);2013年06期
2 張一楠;鄒兆年;李建中;;不確定圖間α-β子圖同構(gòu)匹配算法[J];智能計(jì)算機(jī)與應(yīng)用;2011年05期
3 陳新泉;;圖同構(gòu)的判定研究[J];集成技術(shù);2013年06期
4 張碩;李建中;高宏;鄒兆年;;一種多到一子圖同構(gòu)檢測(cè)方法[J];軟件學(xué)報(bào);2010年03期
5 周克元;;圖同構(gòu)的一個(gè)算法[J];和田師范專(zhuān)科學(xué)校學(xué)報(bào);2007年02期
6 劉富貴;;兩圖同構(gòu)的一個(gè)必要條件和一個(gè)充要條件[J];武漢水運(yùn)工程學(xué)院學(xué)報(bào);1992年02期
7 劉波;房斌;張世勇;李直霖;;基于關(guān)系模型的子圖同構(gòu)檢測(cè)算法設(shè)計(jì)與實(shí)現(xiàn)[J];計(jì)算機(jī)工程;2011年11期
8 王毅;丁函;任丹;;一種無(wú)向圖同構(gòu)的判定算法[J];科技創(chuàng)新與應(yīng)用;2012年28期
9 侯?lèi)?ài)民;郝志峰;胡傳福;陸海鵬;;無(wú)向圖同構(gòu)的快速算法[J];華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版);2011年10期
10 侯?lèi)?ài)民;;圖同構(gòu)的一個(gè)充分必要條件[J];計(jì)算機(jī)工程與應(yīng)用;2009年30期
相關(guān)博士學(xué)位論文 前4條
1 商慧亮;一種新的圖同構(gòu)判定算法[D];復(fù)旦大學(xué);2009年
2 張碩;圖數(shù)據(jù)庫(kù)查詢處理技術(shù)的研究[D];哈爾濱工業(yè)大學(xué);2010年
3 侯?lèi)?ài)民;哈密頓環(huán)與圖同構(gòu)問(wèn)題的理論研究及算法設(shè)計(jì)[D];華南理工大學(xué);2013年
4 商慧亮;一種新的圖同構(gòu)判定算法——電路模擬法[D];復(fù)旦大學(xué);2009年
相關(guān)碩士學(xué)位論文 前10條
1 汪敏;基于程序依賴(lài)圖的代碼克隆檢測(cè)算法研究[D];中國(guó)科學(xué)技術(shù)大學(xué);2018年
2 劉楊;基于大圖處理框架的分布式子圖同構(gòu)研究[D];北京郵電大學(xué);2018年
3 吳楠;有向圖子圖同構(gòu)計(jì)算算法研究[D];遼寧大學(xué);2012年
4 李美云;子圖同構(gòu)問(wèn)題中索引構(gòu)建方法研究[D];燕山大學(xué);2017年
5 王小濤;基于子圖同構(gòu)搜索的徽派建筑快速建模方法研究[D];合肥工業(yè)大學(xué);2013年
6 李辰辰;基于非挖掘索引的圖查詢研究[D];遼寧大學(xué);2014年
7 韓玉;基于圖數(shù)據(jù)的子圖同構(gòu)算法研究[D];燕山大學(xué);2015年
8 張一楠;圖結(jié)構(gòu)數(shù)據(jù)上的子圖查詢[D];哈爾濱工業(yè)大學(xué);2011年
9 張海龍;圖的同構(gòu)問(wèn)題算法研究[D];華中科技大學(xué);2007年
10 潘佳文;PTC-SaaS中基于圖匹配的租約推薦方法研究[D];東北大學(xué);2012年
本文編號(hào):2871987
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/2871987.html