Quello che vuoi veramente fare è vedere se c'è un codice clonato (copiato) tra i due progetti (entrambi i progetti consistono in serie di file possibilmente grandi). Puoi farlo eseguendo uno strumento di rilevamento dei cloni. Wikipedia ne elenca una varietà.
Per decidere in modo grossolano se c'è molta copia, devi solo abbinare le linee di origine, e ci sono una varietà di rivelatori di cloni della linea di origine esatti. Credo che PMD sia uno di questi. Ciò che questi non fanno è trovare il codice che è copiato e incollato; troveranno il codice di copia-incolla-lastra che può essere spostato attorno alla roba copiata.
Se vuoi vedere i dettagli della copia per il codice copy-past-edit, hai bisogno di un rilevatore di cloni che trovi cloni "parametrizzati". I rilevatori basati su token lo fanno per modifiche che sostituiscono solo nomi o costanti di variabili.
I rivelatori basati su ASTA (Abstract-syntax tree) fanno questo per modifiche che coinvolgono blocchi più grandi, come espressioni, istruzioni, inserzioni, cancellazioni, et. Questi ultimi tendono a dare risposte migliori, perché diversamente dai rivelatori di token, possono usare come guida la struttura linguistica del codice sorgente del computer.
Il nostro strumento CloneDR è un rilevatore di questo tipo.
Non conosco strumenti che in realtà troveranno codice "equivalente" (condizionali invertiti), ecc. I ricercatori hanno costruito rilevatori di cloni che fanno qualcosa del genere, ma i combinatorici rendono questo molto costoso da eseguire, e i prototipi di ricerca ridimensionato male.