Я намагаюся знайти кілька хороших прикладів семантичних утиліт diff / merge. Традиційна парадигма порівняння файлів вихідного коду працює, порівнюючи рядки та символи .. але чи існують там утиліти (для будь-якої мови), які насправді враховують структуру коду при порівнянні файлів?
Наприклад, існуючі програми diff повідомлять про "різницю, знайдену у символі 2 рядка 125. Файл x містить пустоту, де файл y містить bool". Спеціалізований інструмент повинен мати змогу повідомляти "Тип повернення методу doSomething () змінено з void на bool".
Я можу стверджувати, що цей тип семантичної інформації - це насправді те, що користувач шукає при порівнянні коду, і має бути метою інструментів прогмінгу нового покоління. Чи є приклади цього в доступних інструментах?