Was Sie wirklich tun möchten, ist zu sehen, ob Code zwischen den beiden Projekten geklont (kopiert) wurde (beide Projekte bestehen aus möglicherweise großen Dateigruppen). Sie können dies tun, indem Sie ein Tool zur Klonerkennung ausführen. Wikipedia listet eine Vielzahl von ihnen auf.
Um grob zu entscheiden, ob viel kopiert wird, müssen Sie nur die Quelllinien abgleichen, und es gibt eine Vielzahl von exakten Quelllinien-Klon-Detektoren. Ich glaube, PMD ist einer von ihnen. Was diese nicht tun, ist, Code zu finden, der durch Kopieren und Einfügen bearbeitet wurde. Sie werden feststellen, dass der Code, der durch Kopieren und Einfügen unverändert bleibt, wahrscheinlich um das kopierte, überarbeitete Material gewickelt ist.
Wenn Sie die Details des Kopierens für Copy-Past-Edit-Code anzeigen möchten, benötigen Sie einen Klondetektor, der "parametrisierte" Klone findet. Token-basierte Detektoren tun dies für Bearbeitungen, die nur Variablennamen oder Konstanten ersetzen.
Auf Abstract-Syntax Tree (AST) basierende Detektoren führen dies für Bearbeitungen durch, die größere Teile wie Ausdrücke, Anweisungen, Einfügungen, Löschungen usw. umfassen. Letztere geben tendenziell bessere Antworten, da sie im Gegensatz zu den Tokendetektoren die Sprachstruktur des Computer-Quellcodes als Leitfaden verwenden können.
Unser CloneDR- Tool ist ein solcher Detektor.
Ich kenne keine Tools, die tatsächlich "äquivalenten" Code finden (umgekehrte Bedingungen) usw. Forscher haben Klondetektoren gebaut, die so etwas tun, aber die Kombinatorik macht die Ausführung sehr teuer, und die Forschungsprototypen sind schlecht skaliert.