Il nostro SD Smart Differencer fa esattamente quello che vuoi. Usa parser di qualità del compilatore per leggere il codice sorgente e creare AST per due file selezionati. Quindi confronta gli alberi guidati dalla sintassi, quindi non viene confuso da spazi, layout o commenti. Poiché normalizza i valori delle costanti, non viene confuso dal cambiamento di radix o dal modo in cui hai espresso le sequenze di escape!
I delta sono riportati al livello dei costrutti langauge (variabile, espressione, istruzione, dichiarazione, funzione, ...) in termini di intento programmatore (cancella, inserisci, copia, sposta) completa con la determinazione di un identificatore è stato rinominato in modo coerente in un blocco modificato.
Lo SmartDifferencer ha versioni disponibili per C (in un certo numero di dialetti, se il parsing accurato per il compilatore, il dialetto langauge è importante) è valido per C++, Java, C#, JavaScript, COBOL, Python e molti altri linguaggi.
Se si desidera comprendere in che modo un insieme di file è correlato tra loro, il nostro SD CloneDR accetterà un insieme di file molto ampio e dirà cosa hanno in comune. Trova il codice che è stato copiato e incollato su tutto il set. Non devi dirgli cosa cercare; lo trova automaticamente. Usando AST (come sopra), non viene ingannato dalle modifiche dello spazio bianco o dai nomi degli identificatori. Nel sito Web sono disponibili numerosi report di rilevamento dei cloni di esempio per varie lingue.
fonte
2010-11-07 18:53:37
È questo rilevamento di plagio di compiti a casa? Un sacco di pacchetti per questo se è quello che stai cercando. –
È possibile ottenere parzialmente lì normalizzando il formato dell'input, quindi diff. L'utilità 'indent' è ottima per questo.Non posso darti una lista di opzioni in cima alla mia testa, ma può inghiottire righe vuote, standardizzare il formato e la spaziatura delle parentesi graffe e così via. I nomi variabili saranno molto più complicati. – Cascabel
Suppongo che potrebbe essere usato a tale scopo, ma in realtà lo userò per confrontare due file che ho scritto. Ti dispiacerebbe pubblicare i nomi di qualsiasi utilità di rilevamento di plagio con cui sei familiare? Forse potrebbero essere di aiuto per me. Grazie! –