如果是兩個源代碼文件進行比較,實質(zhì)上是文本比較,兩個文本的相似度分析目前沒有看到相關(guān)的算法,只有特征匹配來比較相似度。查重軟件是比較兩邊目錄的文件指紋數(shù)字來判斷文件是否是重復(fù)的,比如比較文件的md5值。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的共青城網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
肯定是可以的,任何語言都可以實現(xiàn)論文查重,只不過最重要的是算法是如何檢測重復(fù)
隨著打擊學(xué)術(shù)不端行為的加大。隨著各種論文查重系統(tǒng)的不斷升級,論文的查重檢測越來越嚴格。很多人可能會問:論文中的代碼查重嗎?下面介紹一下這個內(nèi)容。
1、 論文中的代碼是否再次檢測?
1.代碼實際上屬于論文查重的范疇之一,但如果是word版本,使用WPS公式編輯器,則不會被查重;如果提交PDF版本,代碼部分將被查重。
2.另外,有些學(xué)科的代碼是一樣的,也會被查重。畢竟代碼屬于論文的正文部分,查重是必須的。重復(fù)次數(shù)超過控制范圍后,也會被標(biāo)記為紅色,影響論文的查重率。
3.知網(wǎng)近年來更新非???。在最新版本的知網(wǎng)查重系統(tǒng)中,新增了源代碼庫,內(nèi)容非常完整,可以支持cpp.java.py等源代碼的檢測和比較。
論文中代碼如何降重?
1.對于論文中查重率較高的部分代碼,建議大家將其轉(zhuǎn)換成圖片,簡單的操作就是將原始內(nèi)容截圖,重新插入論文。
2.除了轉(zhuǎn)換成圖片,還可以適當(dāng)刪除查重率高的代碼,或者以其他形式表達,但要注意代碼的書寫是否正確。
3.如果引用的代碼查重率偏高,很可能是引用部分設(shè)置的格式錯誤造成的,需要調(diào)整格式。
4.代碼的原創(chuàng)性也很重要,所以要盡量獨立編寫代碼;對于一些重復(fù)率高的代碼,應(yīng)該盡量少用。
我個人為我們課程DIY過一個知網(wǎng)查重的軟件工具,是基于數(shù)據(jù)流分析的,效果還不錯,反正修改變量名,提取函數(shù)這些小伎倆是完全無用的,甚至可以做到一定的跨語言查重(只把c#代碼copy到j(luò)ava里,然后改一改跑起來是會被發(fā)現(xiàn)的)。說明程序代碼也會進行對比查重算抄襲重復(fù)率。下面具體說說程序代碼進行知網(wǎng)查重的方法,具體如下:
以c為例,具體流程大概是,先調(diào)用預(yù)處理器把注釋干掉,把macro展開,因include 而弄進來的那波標(biāo)準(zhǔn)庫頭文件特殊標(biāo)記一下,然后建立CFG(control flow graph)進行知網(wǎng)查重。因為CFG關(guān)心的是變量的值會怎么傳播,所以在中間插入一大堆無副作用的語句是不會有任何效果的,把變量換個名或挪個位置(比如加多一層block)也沒啥卵用。
c++的話就會麻煩很多,畢竟在c++里就算a + b這么個簡單語句,因為operator+可以重載,所以指不定執(zhí)行完這個語句就可以把地球都炸了呢,而且這個重載在不同namespace里還可能不同,比如namespace A是用地球,
namespace B是對整個地球播一段愛的供養(yǎng)神馬的……在c++里建立CFG會是個噩夢……程序代碼進行知網(wǎng)查重的方法比較復(fù)雜吧??!
程序代碼被知網(wǎng)查重很復(fù)雜
不過說起來我們的課程比較特殊,因為作業(yè)用的是類ACM的提交系統(tǒng),所以對運行環(huán)境有比較嚴格的限制,這保證了程序代碼知網(wǎng)查重查重的準(zhǔn)確率。如果是完全開放性的程序代碼知網(wǎng)查重(即對語言和第三方lib等等都不做限制的話)恐怕會很困難。
=== 舉個例子 ===
以下是前幾天剛剛檢測到的抄襲代碼片段……下面兩段java代碼被檢測出有高度匹配(右圖里getARGBData函數(shù)只是把二維數(shù)組給復(fù)制4份湊成一個三維數(shù)組而已,沒干其他事)……
知網(wǎng)查重時程序代碼一樣被算重復(fù)
另外一點,為了減少漏網(wǎng)之魚,知網(wǎng)查重時一般都會用低閾值初篩,再人工介入復(fù)核。此外建立回溯機制,比如如果某人現(xiàn)場考試的成績和作業(yè)排名差異較大的話,會觸發(fā)重查,專門為他調(diào)低閾值重查一遍+人工復(fù)核。不過正因為有人工復(fù)核,所以思路相同一般是不至于誤判的,畢竟只要代碼行數(shù)一多,思路再相同,代碼風(fēng)格上也會有很大差異。
Sonar 在看一篇資料時,注意到的
Sonar 是一個集成了CheckStyle,PMD,Findbugs的代碼校驗規(guī)則 ,重復(fù)代碼發(fā)現(xiàn),代碼測試覆蓋率, 代碼注釋率,及所有的檢測率變化追蹤的完美代碼質(zhì)量檢查工具。
我也不會用這個