Gerçekten yapmak istediğin şey, iki projenin (her ikisi de muhtemelen büyük dosya kümelerinden oluşan projeler) klonlanmış (kopyalanmış) olup olmadığını görmek. Bunu bir klon algılama aracı çalıştırarak yapabilirsiniz. Wikipedia bunlardan çeşitli listeler.
Çok fazla sayıda kopya olup olmadığına karar vermek için, yalnızca kaynak satırları eşleştirmeniz gerekir ve orada çeşitli kaynak satır klon dedektörleri bulunur. PMD'nin onlardan biri olduğuna inanıyorum. Bunların yapmayacağı şey kopyala-yapıştır ile düzenlenmiş bir kod bulmak; Onlar kopya kopyala-yapıştır-değiştirilmemiş kodlarını bularak bulabilirler.
Kopyalama-düzenleme kodu için kopyalamanın ayrıntılarını görmek istiyorsanız, "parametreleştirilmiş" klonları bulan bir klon algılayıcısına ihtiyacınız var. Token tabanlı dedektörler bunu yalnızca değişken adlarını veya sabitlerini değiştiren düzenlemeler için yapar.
Soyut sözdizimi ağacı (AST) tabanlı dedektörler, ifadeler, ifadeler, ekler, silme ve diğerleri gibi daha büyük boyutlarda olan düzenlemeler için bunu yapar. Bu sorular daha iyi cevap verme eğilimindedir, çünkü belirteç dedektörlerinden farklı olarak, bilgisayar kaynak kodunun dil yapısını kılavuz olarak kullanabilirler.
Bizim CloneDR aracı böyle bir dedektörüdür.
Aslında "eşdeğer" kod (ters şartlı şartnameler) vb. Bulabilecek araçları bilmiyorum. Araştırmacılar, bunun gibi bir şey yapan klon dedektörleri inşa ettiler, ancak kombinatorikler bunu yürütmek için çok pahalı ve araştırma prototipleri zayıf ölçeklendi.