Sono alla ricerca di uno strumento che possa confrontare i codici sorgente per la somiglianza.Rilevatore codice simile
Abbiamo un sistema molto banale in questo momento che ha un'enorme quantità di falsi positivi e i veri positivi possono facilmente essere seppelliti in essi.
miei requisiti sono:
- ragionevolmente piccola quantità di falsi positivi
- buon tasso di rilevamento (yeah questi stanno andando contro l'altro)
- idealmente con una potenza più complesso di un singolo valore
- utilizzabile per C (C99) e C++ (C++ 03 e in modo ottimale C++ 11)
- ancora mantenuto
- utilizzabile per co mparing due file sorgente contro l'altro
- utilizzabile in modalità non-interattiva
EDIT:
Per evitare confusione, i seguenti due frammenti di codice sono identici e devono essere rilevati come tali:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
Lo stesso qui:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
Il diff soddisfa alcune delle vostre esigenze? –
@HighPerformanceMark LOL, no non lo fa. –
sembra che tu voglia uno strumento che paragona la somiglianza semantica di 2 codici, piuttosto che sintattico. Sospetto che questo sia un problema irrisolto e che SO lotterà per trovare una soluzione soddisfacente per te. Penso che, come scritto, la tua domanda originale possa ingannare molti lettori proprio come mi ha fuorviato. Penso anche che dovresti riscriverlo completamente per indicare chiaramente in che tipo di confronto sei interessato. –