




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序代碼的相似性檢測
1研究的重要性和發(fā)展過程1.1其他相似性檢測相似性檢測,也稱為檢測plagia-r.或檢測副本的差異,可以應(yīng)用于知識產(chǎn)權(quán)的保護(hù)和檢索。所謂相似性檢測,就是判斷一個(gè)文件的內(nèi)容是否與其他某個(gè)或多個(gè)文件相似。相似不僅僅只是文件的復(fù)制和少量文件布局的修改,還包括同義詞替換以及說法重述等方式。相似性檢測在文檔方面又分為兩類:代碼相似性檢測和自然語言文本相似性檢測。這兩類檢測技術(shù)有一些共性和類似之處,有些檢測工具能夠同時(shí)檢測代碼與文本的相似性。但二者仍存在明顯的不同:自然語言格式較為隨意,結(jié)構(gòu)特征一般不明顯,所表達(dá)的語義存在一定的模糊性;程序語言的語法非常規(guī)則,結(jié)構(gòu)特征很明顯,抄襲所付出的代價(jià)較低,通過編輯器改變外觀并不影響程序的正常運(yùn)行。代碼相似性檢測是從重復(fù)代碼檢測和代碼優(yōu)化技術(shù)演變而來的。重復(fù)代碼通常是指軟件系統(tǒng)中存在的相同或相似的代碼片段,本質(zhì)上是一種簡單的代碼復(fù)用機(jī)制。這種復(fù)用機(jī)制是非正式和不可控的,會(huì)帶來一系列的危害。軟件系統(tǒng)中的重復(fù)代碼大多是出于需要而必須頻繁調(diào)用的,這不可避免地增加了程序代碼的容量和程序運(yùn)行的時(shí)間,如何有效地降低這些軟件的開銷正是代碼優(yōu)化的研究目標(biāo)?,F(xiàn)今,軟件的發(fā)展達(dá)到了一個(gè)空前的規(guī)模。在復(fù)雜如大型軟件系統(tǒng),簡單如程序設(shè)計(jì)課程的編程作業(yè)中,抄襲、雷同現(xiàn)象時(shí)有發(fā)生。由此可見,研究代碼相似性檢測技術(shù)及相應(yīng)的自動(dòng)化工具具有重要的實(shí)際應(yīng)用價(jià)值。1.2基于結(jié)構(gòu)度量的相似性檢測代碼相似性檢測技術(shù)的研究工作已經(jīng)有40多年的歷史,其發(fā)展歷程主要經(jīng)過了兩個(gè)階段。早期的研究主要基于屬性計(jì)數(shù)的方法,其基本原理是從源代碼中抽取各種屬性度量元作為相似性評判的依據(jù):Ottenstein使用Halstead軟件科學(xué)參數(shù)來檢測Fortran程序的相似性。Berghel在此基礎(chǔ)上提出了更多的度量元來改善Fortran代碼的檢測效果。Grier和Faidhi分別使用了20和24種統(tǒng)計(jì)特征來檢測代碼的相似性。屬性計(jì)數(shù)方法的優(yōu)點(diǎn)是與所用的程序設(shè)計(jì)語言無關(guān),無需分析代碼的語法結(jié)構(gòu),實(shí)現(xiàn)較為簡單。但是缺點(diǎn)也非常明顯,屬性計(jì)數(shù)是一種全局代碼度量的模式,不能分析部分程序段的抄襲。而且Verco認(rèn)為僅僅使用屬性度量的檢測方法,增加向量維數(shù)并不能改善檢測效果。此后,學(xué)者在研究過程中主要考慮的是代碼的結(jié)構(gòu)信息,我們稱之為基于結(jié)構(gòu)度量的相似性檢測方法?;诮Y(jié)構(gòu)度量的方法主要是分析程序的結(jié)構(gòu)信息以及執(zhí)行流程。Donaldson最早在抄襲檢測系統(tǒng)中考慮了語句的順序,并且將源程序按語句出現(xiàn)順序進(jìn)行特征化,Plague工具不僅比較了更加詳細(xì)的代碼結(jié)構(gòu)信息,還首次將代碼相似性檢測方法分為了兩個(gè)階段:代碼的格式轉(zhuǎn)化和相似度比較算法。MOSS,JPlag,SIM和YAP系列都是當(dāng)前比較著名的代碼相似性檢測工具,它們對代碼進(jìn)行度量時(shí)都考慮到了結(jié)構(gòu)信息,在具體算法上各有特色。其中MOSS和YAP3利用程序相似性檢測的方法,既可檢測程序也可檢測文本的相似性。YAP系列主要包括YAP1,YAP2和YAP33個(gè)版本。YAP3的主要思路是對代碼進(jìn)行預(yù)處理后使用RKR-GST算法度量。JPlag優(yōu)化了YAP3的性能。SIM工具的檢測過程與Plague大同小異,只是在相似度比較算法上采用了DNA串匹配的LocalAlignment算法。除了上述的兩類方法外,還有學(xué)者提出了新的檢測方法。比如,基于案例推理的Cogger工具、基于PDG圖的GPLAG工具、基于神經(jīng)網(wǎng)絡(luò)的PlagueDoctor、基于優(yōu)化編譯與反匯編的BuaaSim和基于XML框架的XPDec等等。目前只有JPlag和MOSS提供了程序相似性檢測的網(wǎng)上服務(wù)。關(guān)于這些服務(wù)和功能的評測可參見文獻(xiàn)。2概念模型2.1從“常規(guī)手段”到“文本篡改”目前還缺乏一致公認(rèn)的代碼相似性的權(quán)威定義。早期的研究者認(rèn)為:“如果一份代碼由另一份代碼通過少量的常規(guī)變換手段得到,此兩份代碼就是相似的”,這里所說的少量是指所付出的代價(jià)較少,而常規(guī)手段是指不需要理解源代碼的文本置換。但隨著計(jì)算機(jī)技術(shù)的發(fā)展,文本編輯器可以對代碼進(jìn)行大規(guī)模的變換,抄襲手段也不再局限于常規(guī)手段,逐漸出現(xiàn)了很多高級的代碼抄襲方式。文獻(xiàn)認(rèn)為:“兩份代碼滿足一些抄襲變換方式,就可以認(rèn)為是相似的”。2.2代碼篡改的手段通過對代碼相似性檢測技術(shù)的研究,我們發(fā)現(xiàn)和總結(jié)出如下的抄襲手段:1)Faidhi和Robinson的代碼變換光譜圖,將代碼抄襲可能采取的手段分為:L0.未更改、L1.修改注釋、L2.修改標(biāo)識符、L3.調(diào)整變量位置、L4.過程組合、L5.變換程序語句、L6.等價(jià)控制邏輯。L0-L6抄襲所付出的代價(jià)和難度不斷提升。2)Joy的兩類抄襲方式歸納:一為詞法變換,如代碼注釋變換、格式變換、修改變量名和行數(shù)修改。二為結(jié)構(gòu)變換,如Loops語句替換、等價(jià)語句和操作符變換以及不改變執(zhí)行序列的語句調(diào)整。3)Whale的抄襲手段舉例:轉(zhuǎn)換注釋、格式、變量名、操作符的順序、數(shù)據(jù)類型,等價(jià)語句置換,冗余代碼添加,調(diào)整時(shí)序無關(guān)語句的順序,循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)調(diào)整,取消函數(shù)調(diào)用,聲明無關(guān)變量,重構(gòu)代碼片段。4)Jones總結(jié)了代碼相似中常出現(xiàn)的10種抄襲手段,根據(jù)所付出的努力從易到難為:完整拷貝、修改注釋、重新排版、標(biāo)識符重命名、更改代碼塊順序、調(diào)整代碼塊里語句的順序、更改表達(dá)式中操作符和操作數(shù)的順序、更改數(shù)據(jù)類型、添加冗余代碼、控制結(jié)構(gòu)的等價(jià)變換。此外,還有學(xué)者在研究過程中關(guān)注了跨語言抄襲、生成新函數(shù)、常量替換和表達(dá)式拆分等抄襲手段。目前,還沒有見到關(guān)于代碼抄襲手段的精確分類。一般來說,可以從代碼布局、語法的等價(jià)變換和語義的等價(jià)變換3個(gè)方面來對代碼抄襲手段進(jìn)行分類。上面列出的抄襲手段大多集中在代碼布局和語法變換兩個(gè)層次。語義層面的等價(jià)變換對代碼外觀的影響很大,而且由于程序狀態(tài)的組合爆炸問題和程序的停機(jī)性不可判定,沒有任何方法能夠完全檢測出語義等價(jià)的相似代碼。2.3中間代碼轉(zhuǎn)換Whale在研究過程中首次提出將檢測過程分為兩個(gè)階段:代碼格式轉(zhuǎn)換和相似度確定。后來的很多檢測方法都參考了這一框架,并將整個(gè)代碼相似性檢測的過程分為4個(gè)部分:預(yù)處理、中間代碼轉(zhuǎn)換、比較單元生成和匹配算法。預(yù)處理過程的目的是剔除一些與程序相似性無關(guān)的信息,盡可能地屏蔽一些簡單的抄襲手段對代碼外觀的影響。其操作通常包括:統(tǒng)一代碼的布局,消除代碼中一些無關(guān)字符(如空行、注釋行)等。程序代碼轉(zhuǎn)換,是在不改變計(jì)算機(jī)程序語言的邏輯結(jié)構(gòu)前提下,將程序代碼轉(zhuǎn)換成其他形式,以提供方便的、快速的程序比較。一般采用程序語言分析器、編譯器[19,21,22,26,36,38,39,43,50,53]和自定義規(guī)則3種方式來轉(zhuǎn)換源代碼文件。中間代碼的形式有規(guī)格化文本(標(biāo)識符或規(guī)格的符號表示)、樹型結(jié)構(gòu)(抽象語法樹或XML文檔)、圖結(jié)構(gòu)(程序結(jié)構(gòu)與數(shù)據(jù)流分析)等。然后將中間代碼形式切分成細(xì)粒度的單元與其他的單元進(jìn)行相似性比較,這些切分后的單元一般稱為比較單元。常見的比較單元有詞(Token)、字符串(String)、特征向量(Vector)、樹結(jié)點(diǎn)(Node)、子圖結(jié)構(gòu)(Graph)等。依據(jù)不同形式的比較單元,采用不同的相似性匹配算法來分析比較單元中的相似現(xiàn)象,如:串比較、神經(jīng)網(wǎng)絡(luò)、圖匹配和子樹匹配方法等等。預(yù)處理的目的在于剔除一些與程序代碼無關(guān)的信息。中間代碼的轉(zhuǎn)化需要盡可能地消除抄襲手段所帶來的噪音,以提高檢測效果。切分比較單元需要選用合適的粒度(固定或自由粒度)。固定粒度的值太大,會(huì)導(dǎo)致無法檢測小于這個(gè)粒度的相似現(xiàn)象;粒度太小,檢測結(jié)果會(huì)失去意義。而自由粒度最主要的問題是可能不合理地跨越程序的語法邊界。3代碼檢測技術(shù)的分析和比較3.1相似匹配模型檢驗(yàn)文獻(xiàn)等都使用工具獲得源代碼的抽象語法樹結(jié)構(gòu)。文獻(xiàn)直接在語法樹上尋找相似子樹,使用公式Similarity=2*S/(2*S+L+R)計(jì)算語法樹的相似度。S為共有的結(jié)點(diǎn),L,R分別兩樹中的不同結(jié)點(diǎn)。文獻(xiàn)使用切片技術(shù)分割語法樹,并且在文獻(xiàn)的研究基礎(chǔ)上提出了改進(jìn)的相似度計(jì)算公式。文獻(xiàn)檢測代碼相似性的方法是匹配馬爾科夫模型。而文獻(xiàn)的基本方法是定義了9維特征:[標(biāo)識符、常量、賦值、自增/減、數(shù)組、條件、表達(dá)式、聲明、循環(huán)]來表示語法樹中每一個(gè)結(jié)點(diǎn),父結(jié)點(diǎn)的值是其所有子結(jié)點(diǎn)的值和本身特征向量的矢量和,最后使用LSH算法度量源代碼的相似性。此外,XPDec及其改進(jìn)版EXPDec都是將源代碼轉(zhuǎn)變成XML文檔,從中提取特征矩陣用于相似性的計(jì)算。上述的檢測方法有原樹和樹結(jié)構(gòu)串型化兩種操作模式。而相似匹配的基本單元有樹和單個(gè)結(jié)點(diǎn)兩種結(jié)構(gòu)。遺憾的是,以樹為匹配單位會(huì)丟失一些信息,同時(shí)產(chǎn)生一些無用的信息,單個(gè)結(jié)點(diǎn)匹配會(huì)忽略樹的結(jié)構(gòu)特征,從而降低抄襲檢測的效果。而且,對于有N個(gè)結(jié)點(diǎn)的語法樹,逐一地對子樹進(jìn)行比較需要O(N3)的計(jì)算時(shí)間。一般來說,一行程序語句平均會(huì)生成10個(gè)左右的抽象語法樹結(jié)點(diǎn),那么子樹比較的時(shí)間復(fù)雜度為O(L4)(L為代碼的語句數(shù))。顯然,這樣的方法無法處理大型的程序。3.2子圖相似檢測基于圖檢測方法的基本思路與基于樹型結(jié)構(gòu)的方法類似。通過分析源代碼的語法結(jié)構(gòu)以及函數(shù)調(diào)用關(guān)系、控制依賴關(guān)系、數(shù)據(jù)流等,構(gòu)建程序的依賴關(guān)系圖(PDG),匹配圖中的結(jié)點(diǎn),由這些結(jié)點(diǎn)組成的連通圖被稱為相似子圖,由此判斷代碼的相似性。文獻(xiàn)使用傳統(tǒng)的程序依賴關(guān)系圖,文獻(xiàn)充分考慮了抽象語法樹和程序依賴關(guān)系圖的關(guān)系,將傳統(tǒng)的PDG劃分成更小的比較單元,提高了檢測的效果。GPLAG根據(jù)PDG圖建立并優(yōu)化了抄襲檢測空間,然后使用形式化的子圖相似方法計(jì)算源代碼的相似性。在該種檢測思路中,圖的結(jié)點(diǎn)和連接關(guān)系體現(xiàn)了程序的語法,而數(shù)據(jù)流可視為程序語義的抽象表達(dá),因而具有較好的抄襲檢測能力,且有可能檢測到文本結(jié)構(gòu)完全不同的抄襲代碼。但是,通過靜態(tài)分析工具建立代碼的PDG圖所耗費(fèi)的代價(jià)很高。圖比樹結(jié)構(gòu)更為復(fù)雜,在其上尋找相似的子圖的時(shí)空復(fù)雜度很高,故檢測效率低。3.3基于sim的相似比較Dup工具以源代碼行作為比較單元,并構(gòu)建比較單元的后綴樹模式來計(jì)算相似度。其最大的問題在于忽略了代碼空間布局的調(diào)整,檢測能力不足。DupLoc解決了這一問題,首先使用代碼布局器對源代碼進(jìn)行處理,再使用一種基于字符串的動(dòng)態(tài)模式匹配算法來分析源代碼行的相似性。Sim通過標(biāo)準(zhǔn)的詞匯分析器將源程序轉(zhuǎn)化為解析樹模式,而后切分成一個(gè)個(gè)模塊作為相似性比較的基本單元。比較算法方面使用DNA串比較方法獲得抄襲評判的量化值。而Bandit工具是將程序代碼分解成詞匯標(biāo)識符串、獨(dú)立的程序結(jié)構(gòu)、注釋和變量名幾部分,通過Dotplot方法查找相似的標(biāo)識符號序列來獲取相似度值。結(jié)果反饋是源程序中匹配序列的長度和位置,而不是上述工具的相似值結(jié)果。基于串的檢測是從源代碼的文本結(jié)構(gòu)及詞法的角度去度量程序的相似度,不需要使用重量級的編譯工具。方法支持多種編程語言甚至是純文本文件的相似性檢測?;诖姆椒ㄝ^樹或圖的檢測思路具有更佳的時(shí)空效率,適用于檢測大型軟件系統(tǒng)的抄襲現(xiàn)象。3.4標(biāo)記編碼相似代碼的轉(zhuǎn)化文獻(xiàn)[17,18,19,21,22,23,36,38,49,50,51,52]都是典型的基于標(biāo)識符檢測代碼相似性的方法。而在標(biāo)識符的生成、操作和匹配等方面各有特色。CCFinder首先通過一系列的預(yù)處理(詞法分析、針對特定編程語言的冗余信息消除等)將源代碼轉(zhuǎn)化成統(tǒng)一的特殊符號,而后把所有的符號構(gòu)造成后綴樹,使用時(shí)間復(fù)雜度僅有O(n)(n為樹中符號的個(gè)數(shù))的高效后綴樹算法尋找程序中相似的片段,檢測結(jié)果具有較高的召回率。文獻(xiàn)采用的方法與CCFinder類似,能夠更加精確地定位相似代碼,而且具有發(fā)現(xiàn)完整語法結(jié)構(gòu)相似代碼的功能。Plague工具創(chuàng)建目標(biāo)代碼的標(biāo)識符序列后用變體的最長公共子序列算法對其進(jìn)行比較。YAP系列是在Plague的基礎(chǔ)上開發(fā)的,目的是解決Plague工具執(zhí)行效率不高的問題。實(shí)驗(yàn)結(jié)果表明,YAP在不犧牲檢測精確度的前提下,大大地提高了效率,而且具有較好的移植性。Jplag在互聯(lián)網(wǎng)上提供在線的程序代碼抄襲檢測服務(wù),是目前較為流行的檢測工具。使用RKR-GST算法來度量標(biāo)記字符的相似程度。實(shí)驗(yàn)結(jié)果表明,Jplag較其他檢測工具更為出眾。文獻(xiàn)在對程序的轉(zhuǎn)化字符操作中都考慮了切片技術(shù)(N-Grams)。一方面便于快速索引相似的字符片段,另一方面提高了檢測的效率(任何對局部程序的改變只會(huì)影響很少的切片序列)。此外,基于案例推理的Cogger和基于聚類的PDetect都把程序設(shè)計(jì)語言中的關(guān)鍵字作為核心的程序?qū)傩?Metric)來判定程序之間的抄襲?;诖臋z測和基于標(biāo)識符的檢測在本質(zhì)上并沒有太多的區(qū)別,均可歸結(jié)為基于文本的檢測方法,可在自然語言文檔復(fù)制檢測的研究中找到雛形。一些方法[17,18,19,21,22,23,51]在代碼轉(zhuǎn)化過程中同時(shí)涉及到了標(biāo)識符和串結(jié)構(gòu),僅僅是研究者對于單個(gè)標(biāo)識符在相似性判定的重要程度方面有所區(qū)別而已?;跇?biāo)識符的檢測無須依賴功能強(qiáng)大的編譯器,檢測算法時(shí)間復(fù)雜度低,如文獻(xiàn)使用普通的PC機(jī)比較177081行源代碼的Ant1.6.2工具,僅需要94385ms的運(yùn)行時(shí)間。3.5基于度量值的檢測方法基于度量值的代碼相似性檢測思路,是用一系列的度量值代替源代碼進(jìn)行抄襲判定。該類檢測方法由于沒有對源代碼進(jìn)行轉(zhuǎn)換,因此可以方便地定位源代碼中的相似片段。早期檢測抄襲的屬性計(jì)數(shù)方法就是利用程序的某些度量值來分析程序中的相似片段。但是由于檢測效率不高,基于度量值的檢測思路逐漸向兩個(gè)方向發(fā)展。一是沿用屬性計(jì)數(shù)的基本方法,充分考慮程序的結(jié)構(gòu)信息。該種檢測思路最早運(yùn)用到文獻(xiàn)的檢測系統(tǒng)中。后續(xù)工作加入了函數(shù)調(diào)用關(guān)系、扇入扇出系數(shù)、McCabe圈復(fù)雜度等與結(jié)構(gòu)相關(guān)的信息;二是將交叉學(xué)科諸如數(shù)據(jù)挖掘、信息論的有關(guān)研究成果應(yīng)用于基于度量值的代碼相似性檢測中[25,36,53,54,55,56,57,58]。比如PlagueDoctor試圖將比較代碼集分成相似類和非相似類,提取比較程序?qū)Φ?2個(gè)度量值并組成特征向量,輸入至BP神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。通過反復(fù)調(diào)節(jié)學(xué)習(xí)參數(shù)降低訓(xùn)練誤差,從而使分類器具有相似檢測能力。但該類方法的限定條件較多,檢測效果的好壞無法判定,其具體實(shí)施還有待進(jìn)一步測試。對于上述各類代碼相似性檢測方法,其技術(shù)特點(diǎn)可用表1概括。4代碼檢測技術(shù)的相關(guān)研究4.1軟件復(fù)用性的要求克隆代碼自動(dòng)檢測技術(shù)的目的是發(fā)現(xiàn)那些在軟件系統(tǒng)中相同或相似的代碼片段,主要應(yīng)用于軟件重構(gòu)與再工程,以提高軟件復(fù)用性??寺〉拇a也可從詞法、語法和語義3個(gè)層面來考慮。其檢測技術(shù)的核心是代碼相似性判定,即尋找軟件系統(tǒng)中超過某一閾值的代碼片段集。代碼克隆檢測和代碼相似性檢測在檢測思路和原理上都有很大的一致性,兩種方法具有一定的通用性[1,4,5,41,46,47,49,63]。4.2自適應(yīng)算法代碼之間存在的相似現(xiàn)象有一些客觀原因,可以從代碼本身和編寫人員的角度來分析。程序代碼的語法比較規(guī)則,一些簡單的操作所使用的程序語句基本一致,程序代碼大部分是由這些簡單的語句所構(gòu)成,那么不可避免地在代碼中存在著一些相似的語句。特別地,如果程序代碼所解決的問題難度較低,流程就比較簡單。這樣的程序也會(huì)有很大的相似性。文獻(xiàn)在收集實(shí)驗(yàn)的樣本時(shí)都提到了這一問題,而文獻(xiàn)提出了一種自適應(yīng)的算法來降低這一問題所帶來的影響。對于不同的編程人員,受技能培訓(xùn)和思維定式的影響,解決問題的思路也可能存在一致性,使用類似的邏輯開發(fā)的代碼也會(huì)很相似。4.3局部或部分攻擊攻擊文獻(xiàn)在研究中關(guān)注了全局的代碼相似現(xiàn)象(所謂全局,即是代碼源并非本地提交的,而是存在于網(wǎng)絡(luò)、書籍和音像制品中的參考代碼)。文獻(xiàn)認(rèn)為與局部的代碼相似應(yīng)用領(lǐng)域相比,全局的抄襲現(xiàn)象缺乏更有效的檢測手段,導(dǎo)致其問題日益嚴(yán)重。文獻(xiàn)主要分析了Web上的代碼抄襲現(xiàn)象,而在文獻(xiàn)中探討了應(yīng)對網(wǎng)絡(luò)抄襲的一些有效的策略。4.4代碼相似性檢測技術(shù)的展望基于代碼抄襲者需要參考一份或多份代碼的事實(shí),文獻(xiàn)認(rèn)為在代碼編寫的初期施加一些策略就可捕獲抄襲。文獻(xiàn)提出的代碼水印技術(shù),能夠有效地記錄、預(yù)防和管理抄襲現(xiàn)象。目前,代碼相似性檢測仍然存在很多困難和問題??偨Y(jié)已有的研究成果并結(jié)合我們的研究實(shí)踐,我們認(rèn)為目前代碼相似性自動(dòng)檢測技術(shù)中還存在以下的不足:1)在檢測的時(shí)空效率和檢測結(jié)果的準(zhǔn)確度上難以取得較好的折衷。不同應(yīng)用背景和代碼規(guī)模對于時(shí)空效率的需求各不相同。5類檢測思路各有優(yōu)缺點(diǎn),但由于它們所采用的代碼抽象表示各異,因此很難將這幾類技術(shù)的優(yōu)勢結(jié)合在一起,以形成一個(gè)更好的相似性檢測方法。2)由于沒有代碼相似性的權(quán)威定義,不同學(xué)者對于相似代碼的理解有差異。“兩份代碼滿足一些抄襲變換方式,就可以認(rèn)為是相似的”這一說法缺乏量化值,以至于在研究過程中無法確定代碼相似性的客觀值,代碼相似性的檢測效果存在著一定的失真性。3)文獻(xiàn)中總結(jié)了當(dāng)前流行的檢測工具能夠檢測出的抄襲手段,結(jié)果表明大部分的檢測工具和方法只能檢測出一些使用很少量的抄襲手段的相似代碼,抄襲手段主要集中在詞法和語法變換兩方面。如果抄襲者獲知相似性檢測工具的技術(shù)原理,則完全可以使用一些更具有針對性的、更高級的基于語法和語義等價(jià)的代碼變換方法來逃避抄襲檢測。此外,一些檢測方法只是針對某一種特定的抄襲手段,缺乏實(shí)用性。4)由于目前沒有一個(gè)權(quán)威的代碼相似性檢測的測試集,因此代碼相似性檢測的效果難以準(zhǔn)確評估。雖然,目前大多使用Jplag,MOSS等系統(tǒng)作為檢測效果的對比工具[26,36,37,43,50,53,57,58],但這些工具本身的檢測效果并不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度影視作品知識產(chǎn)權(quán)共享授權(quán)合同
- 二零二五年度家庭房產(chǎn)贈(zèng)與與子女教育基金綁定合同
- 職工食堂承包合同
- 高層建筑施工合同
- 人力資源信息系統(tǒng)開發(fā)與維護(hù)合同
- 債務(wù)和解合同模板
- 中保人壽:子女教育婚嫁備用金保險(xiǎn)合同條款及說明
- 2025-2030年中國液壓自動(dòng)管端成形機(jī)項(xiàng)目投資可行性研究分析報(bào)告
- 2025-2030年中國消防水龍帶行業(yè)深度研究分析報(bào)告
- 足球球員經(jīng)紀(jì)合同
- 2025中考作文預(yù)測
- 油氣田開發(fā)專業(yè)危害因素辨識與風(fēng)險(xiǎn)防控
- 2025年浙江省衢州市常山糧食收儲有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 假肢安裝合同范本
- DB37-T4824-2025 鄉(xiāng)鎮(zhèn)(街道)應(yīng)急物資配備指南
- 2025年國航機(jī)務(wù)系統(tǒng)AMECO技術(shù)員崗位校園招聘筆試參考題庫附帶答案詳解
- 《重大基礎(chǔ)設(shè)施項(xiàng)目涉及風(fēng)景名勝區(qū)選址論證報(bào)告編制技術(shù)規(guī)范》編制說明
- 2025年中國中煤能源股份有限公司招聘筆試參考題庫含答案解析
- 2024年蘇州健雄職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年大慶醫(yī)學(xué)高等專科學(xué)校高職單招語文歷年參考題庫含答案解析
- 四川省綿陽市2025屆高三上學(xué)期第二次診斷性考試語文試題(含答案)
評論
0/150
提交評論