Apa yang benar-benar ingin Anda lakukan adalah melihat apakah ada kode yang dikloning (disalin) di kedua proyek (kedua proyek yang terdiri dari set file yang mungkin besar). Anda dapat melakukan ini dengan menjalankan alat deteksi kloning. Wikipedia mencantumkan beragamnya.
Untuk memutuskan secara kasar jika ada banyak penyalinan, Anda hanya perlu mencocokkan baris sumber, dan ada berbagai detektor klon sumber-garis yang tepat di luar sana. Saya percaya PMD adalah salah satunya. Yang tidak akan dilakukan adalah menemukan kode yang disalin-tempel-edit; mereka akan menemukan kode copy-paste-tidak-berubah boilerplate kemungkinan melilit copy-past-diedit hal-hal.
Jika Anda ingin melihat detail dari penyalinan untuk copy-past-edit kode, Anda memerlukan detektor klon yang menemukan klon "parameter". Detektor berbasis token melakukan ini untuk pengeditan yang menggantikan hanya nama variabel atau konstanta.
Detektor berbasis pohon abstrak-sintaksis (AST) melakukan ini untuk pengeditan yang melibatkan potongan yang lebih besar, seperti ekspresi, pernyataan, penyisipan, penghapusan, dll. Yang terakhir ini cenderung memberikan jawaban yang lebih baik, karena tidak seperti detektor token, mereka dapat menggunakan struktur bahasa kode sumber komputer sebagai panduan.
Alat CloneDR kami adalah pendeteksi semacam itu.
Saya tidak tahu alat yang benar-benar akan menemukan kode "setara" (kondisional terbalik), dll. Para peneliti telah membangun detektor klon yang melakukan sesuatu seperti ini, tetapi kombinatorik membuat ini sangat mahal untuk dieksekusi, dan prototipe penelitian berskala buruk.