Я пытаюсь найти несколько хороших примеров утилит semantic diff/merge. Традиционная парадигма сравнения файлов исходного кода работает путем сравнения строк и символов.. но есть ли там какие-либо утилиты (для любого языка), которые фактически рассматривают структуру кода при сравнении файлов?
Например, существующие программы diff сообщают "разницу, найденную в символе 2 строки 125. Файл x содержит v-o-i-d, где файл y содержит b-o-o-l". Специализированный инструмент должен иметь возможность сообщить "Тип возврата метода doSomething() изменен с void на bool".
Я бы сказал, что этот тип семантической информации на самом деле является тем, что пользователь ищет при сравнении кода, и должен быть целью инструментов прогеммирования следующего поколения. Есть ли примеры этого в доступных инструментах?