Je recherche une application qui puisse comparer deux sources C ++ et trouver les différences significatives du code (pour comparer des versions qui ont pu être reformatées différemment). Au minimum, quelque chose qui a la capacité d'ignorer les changements dans les espaces blancs, les espaces de tabulation et les sauts de ligne qui n'affectent pas la fonctionnalité de la source (notez que si un saut de ligne est considéré comme un espace blanc dépend du langage , et C et C ++ le font ). Et, idéalement, quelque chose qui peut identifier exactement toutes les différences significatives du code. Je suis sous Ubuntu.
Selon diff --help | grep ignore
, je m'attendais diff -bBwZ
à faire raisonnablement le travail (je m'attendais à obtenir des faux négatifs, pour être traités plus tard). Néanmoins, ce n'est pas le cas.
si j'ai les fichiers suivants avec des extraits
test_diff1.txt
else if (prop == "P1") { return 0; }
et test_diff2.txt
else if (prop == "P1") {
return 0;
}
puis
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
au lieu de résultats vides.
L'utilisation d'un formateur de code comme "filtre" sur les deux entrées peut filtrer ces différences, mais la sortie résultante devrait alors être liée aux entrées d'origine pour le rapport final des différences afin de conserver le texte et les numéros de ligne réels. Donc l'objectif est réalisable sans avoir besoin d'un compilateur correctement ... Je ne sais pas si quelque chose est disponible, cependant.
Peut-on atteindre l'objectif diff
?
Sinon, existe-t-il une alternative (de préférence, pour la ligne de commande)?