當前位置:編程學習大全網 - 源碼下載 - 如何計算兩份代碼的相似度?

如何計算兩份代碼的相似度?

問題裏既然說是代碼了,那就可以看到源碼了?(我默認)最簡單的就是diff壹下啦,對策可以改改代碼風格,排版,變量命名,甚至插曲壹些無用代碼等等。這些只是看起來不同了。另外幾位大神的答案,似乎忽略了程序運行時的狀況呢,如果程序本身邏輯沒變,只是文本和語法上做些處理(忽略lisp之類的奇葩),程序運行起來之後,比較調用堆棧的變化,這種方法很容易識破。妳說運行起來比較難的話,那就忽略了測試人員的作用了,把程序/代碼段/模塊 當成黑盒,通過mock等方式,還是可以壹部分壹部分搞的。那改變調用層次,函數套函數?甚至某些地方變成宏?模塊重構?諸如此類。這就不好識別了。模塊都給重構了的話,姑且不算抄了,但是設計上壹樣的,人工code review,去了解它的設計,還是能識破。首先可以diff壹下,然後看運行狀態,如果是差別很大的,看設計,做code review,看文檔,如果自己的代碼特別多,而人家的代碼又拿不到,可以在自己的代碼裏加些水印,比如搞些magic number,運行時去調試,就找這個magic number,有的話,基本就是盜的。計算的話,我覺得評級比較靠譜,列規則,挨個檢測,根據規則中槍程度評級,完全量化的方法應該很難做到,但是規則+評級 可以糙快猛的構造出壹個比較相似度的系統,工程思維哈,不斷根據實踐,去調整這個系統,讓它更接近準確就可以啦~我說的都是土方法,期待學術大神給個系統答案。

  • 上一篇:中華人民共和國(中國)人民幣保護法
  • 下一篇:如何在Unity中創建UI?
  • copyright 2024編程學習大全網