Estou procurando um aplicativo que possa comparar duas fontes C ++ e encontrar as diferenças significativas de código (para comparar versões que podem ter sido reformatadas de maneira diferente). No mínimo, algo que tenha a capacidade de ignorar alterações em espaços em branco, espaços de tabulação e novas linhas que não afetem a funcionalidade da fonte (observe que se uma nova linha é considerada espaço em branco depende do idioma , e C e C ++ o fazem ) E, idealmente, algo que possa identificar exatamente todas as diferenças significativas de código. Estou no Ubuntu.
De acordo com diff --help | grep ignore
, eu esperava diff -bBwZ
fazer o trabalho razoavelmente (esperava obter alguns negativos negativos, para ser tratado mais tarde). No entanto, não.
se eu tiver os seguintes arquivos com trechos
test_diff1.txt
else if (prop == "P1") { return 0; }
e test_diff2.txt
else if (prop == "P1") {
return 0;
}
então
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
em vez de resultados vazios.
O uso de um formatador de código como um "filtro" em ambas as entradas pode filtrar essas diferenças, mas a saída resultante teria que ser vinculada às entradas originais para o relatório final das diferenças para manter o texto e os números de linha reais. Portanto, o objetivo é atingível sem a necessidade de um compilador corretamente ... Não sei se há algo disponível.
O objetivo pode ser alcançado diff
?
Caso contrário, existe uma alternativa (preferencialmente, para linha de comando)?