文獻(xiàn)標(biāo)識(shí)碼: A
DOI: 10.20044/j.csdg.2097-1788.2022.03.010
引用格式: 班必奐,徐云. 基于改進(jìn)WL圖核的代碼克隆檢測(cè)方法[J].網(wǎng)絡(luò)安全與數(shù)據(jù)治理,2022,41(3):60-66.
0 引言
在實(shí)際的軟件系統(tǒng)開發(fā)過程中,開發(fā)人員出于提高開發(fā)效率或者降低軟件錯(cuò)誤風(fēng)險(xiǎn)的原因,通常會(huì)將其他模塊中功能相同或者相近的代碼片段通過復(fù)制—修改(或不修改)—粘貼的模式引入到當(dāng)前正在開發(fā)的模塊中,這些粘貼而來的功能相同或相似的代碼片段在學(xué)術(shù)界通常被稱為克隆代碼[1]。大量的研究表明,過多的克隆代碼會(huì)給軟件系統(tǒng)帶來維護(hù)成本提高[2]和Bug蔓延[3]等問題。例如,假設(shè)某一段代碼中存在Bug并且這段代碼被復(fù)制粘貼在不同的位置,那么這個(gè)Bug將會(huì)隨著這些克隆代碼在整個(gè)軟件中傳播,進(jìn)而增加了維護(hù)的難度。因此,檢測(cè)出軟件系統(tǒng)中的克隆代碼并對(duì)其進(jìn)行統(tǒng)一管理是非常有必要的。
隨著代碼克隆檢測(cè)技術(shù)的不斷發(fā)展,高級(jí)別代碼克隆(即Type-3和Type-4克隆)的檢測(cè)成為當(dāng)前的研究熱點(diǎn)之一。由于高級(jí)別克隆代碼往往在復(fù)制粘貼之后還進(jìn)行了一些修改,因此也更有可能存在Bug[4]。另外,修改所導(dǎo)致的差異性也使得這一類型的克隆更加難以被檢測(cè)。
得益于程序依賴圖(Program Dependency Graph,PDG)中所包含的大量語法結(jié)構(gòu)信息和語義信息,基于PDG的克隆檢測(cè)方法在檢測(cè)高級(jí)別克隆上更具優(yōu)勢(shì),能夠檢測(cè)出更多的結(jié)構(gòu)相似但文本差異較大的高級(jí)別克隆代碼。但在已有的方法中,采用精確圖匹配算法的CCSharp[5]、GPLAG[6]等克隆檢測(cè)方法存在時(shí)間性能差和召回率低的缺點(diǎn),而采用Weisfeiler-Lehman(WL)圖核進(jìn)行近似圖匹配計(jì)算的CCGraph[7],受限于節(jié)點(diǎn)初始標(biāo)簽的單一性和WL圖核迭代過程中對(duì)近似子結(jié)構(gòu)識(shí)別能力的缺失,召回率也相對(duì)較低。為此,本文針對(duì)WL圖核算法在PDG克隆檢測(cè)應(yīng)用中存在的缺陷,提出了一種改進(jìn)思路:首先利用語法分析技術(shù)將PDG節(jié)點(diǎn)所包含的源代碼信息解析為特征向量的形式來作為該節(jié)點(diǎn)的初始標(biāo)簽,使其能夠保留更多的語義信息;然后通過引入局部敏感哈希技術(shù)提升PDG中近似子結(jié)構(gòu)的識(shí)別能力,進(jìn)而提升高級(jí)別克隆的召回率。
本文詳細(xì)內(nèi)容請(qǐng)下載:http://ihrv.cn/resource/share/2000004907
作者信息:
班必奐1,2,徐 云2,3
(1.中國科學(xué)技術(shù)大學(xué) 大數(shù)據(jù)學(xué)院,安徽 合肥230026;
2.安徽省高性能計(jì)算重點(diǎn)實(shí)驗(yàn)室,安徽 合肥230026;
3.中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥230026)