Я шукаю додаток, який може зіставити два джерела C ++ і знайти значущі коди відмінності (для порівняння версій, які, можливо, були переформатовані по-різному). Як мінімум, те, що має можливість ігнорувати зміни в пробілах, пробілах та нових рядках, які не впливають на функціональність джерела (зауважте, що чи вважається новий рядок пробілом, залежить від мови , а C і C ++ роблять це ). І в ідеалі - щось, що може визначити саме всі кодозначущі відмінності. Я перебуваю під Ubuntu.
Згідно diff --help | grep ignore
, я розраховував diff -bBwZ
виконати цю роботу розумно (я розраховував отримати помилкові негативи, з якими розглядатися пізніше). Тим не менш, це не так.
якщо у мене є такі фрагменти з фрагментами
test_diff1.txt
else if (prop == "P1") { return 0; }
і test_diff2.txt
else if (prop == "P1") {
return 0;
}
тоді
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
замість порожніх результатів.
Використання форматера коду як "фільтра" на обох входах може відфільтрувати ці відмінності, але тоді отриманий результат повинен бути прив'язаний до початкових входів для остаточного звітування про різниці, щоб зберегти фактичний текст та номери рядків. Тож мета досяжна без необхідності компілятора належним чином ... Я не знаю, чи є щось доступне.
Чи можна досягти мети diff
?
В іншому випадку, чи існує альтернатива (бажано, для командного рядка)?