Sto cercando un'applicazione in grado di confrontare due fonti C ++ e trovare le differenze significative per il codice (per confrontare le versioni che potrebbero essere state riformattate in modo diverso). Come minimo, qualcosa che ha la capacità di ignorare le modifiche in spazi bianchi, tabulazioni e newline che non influiscono sulla funzionalità della sorgente (si noti che se una newline è considerata spazio bianco dipende dalla lingua , e C e C ++ lo fanno ). E, idealmente, qualcosa che può identificare esattamente tutte le differenze significative del codice. Sono sotto Ubuntu.
Secondo diff --help | grep ignore
me, mi aspettavo diff -bBwZ
di fare ragionevolmente il lavoro (mi aspettavo di ottenere alcuni falsi negativi, che verranno affrontati in seguito). Tuttavia, non lo fa.
se ho i seguenti file con frammenti
test_diff1.txt
else if (prop == "P1") { return 0; }
e test_diff2.txt
else if (prop == "P1") {
return 0;
}
poi
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
invece di risultati vuoti.
L'uso di un formattatore di codice come "filtro" su entrambi gli input può filtrare queste differenze, ma quindi l'output risultante dovrebbe essere ricollegato agli input originali per la segnalazione finale delle differenze per mantenere il testo e i numeri di riga effettivi. Quindi l'obiettivo è raggiungibile senza la necessità di un compilatore correttamente ... Non so se qualcosa è disponibile, però.
L'obiettivo può essere raggiunto diff
?
Altrimenti, esiste un'alternativa (preferibilmente, per la riga di comando)?