Estoy buscando una aplicación que pueda comparar dos fuentes de C ++ y encontrar las diferencias significativas en el código (para comparar versiones que pueden haber sido formateadas de manera diferente). Como mínimo, algo que tiene la capacidad de ignorar los cambios en los espacios en blanco, los espacios de tabulación y las nuevas líneas que no afectan la funcionalidad de la fuente (tenga en cuenta que si una nueva línea se considera espacio en blanco depende del idioma , y C y C ++ lo hacen) ) E, idealmente, algo que pueda identificar exactamente todas las diferencias significativas de código. Estoy bajo Ubuntu.
Según diff --help | grep ignore
lo previsto, esperaba diff -bBwZ
hacer razonablemente el trabajo (esperaba obtener algunos falsos negativos, que se abordarán más adelante). Sin embargo, no lo hace.
si tengo los siguientes archivos con fragmentos
test_diff1.txt
else if (prop == "P1") { return 0; }
y test_diff2.txt
else if (prop == "P1") {
return 0;
}
entonces
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
en lugar de resultados vacíos.
El uso de un formateador de código como "filtro" en ambas entradas puede filtrar estas diferencias, pero luego la salida resultante tendría que estar vinculada a las entradas originales para el informe final de las diferencias para mantener el texto real y los números de línea. Por lo tanto, el objetivo es alcanzable sin la necesidad de un compilador correctamente ... Sin embargo, no sé si hay algo disponible.
¿Se puede alcanzar el objetivo diff
?
De lo contrario, ¿hay una alternativa (preferiblemente, para la línea de comando)?