Есть ли какой-либо инструмент diff/merge для языков программирования, который работает с поддержкой синтаксиса (например, XML Diff Tool), делая больше, чем сравнение по очереди (и, необязательно, игнорируя пробелы).
Мне интересна программа, которая действительно следует за синтаксисом и разделителями языка, предлагая изменения без нарушения синтаксической корректности или группировки операторов, разделенных на несколько строк. Пример поведения:
* при поиске if(){
, который вводит дополнительный уровень вложенности, автоматически связывает заключительную скобку }
с несколькими строками ниже с ней.)
* сохраняйте совпадающие элементы синтаксиса вместе, избегайте глупости, например, удаление блока имеет тенденцию создавать:
int function_A()
{
int ret;
ret = something;
ret += something_else;
return ret;
}
int function_B()
{
if(valid)
{
int ret;
ret = something;
ret += something_else;
Забастовкa >
return ret;
}
else return -1;
}
Забастовкa >
Лично я хотел бы найти программное обеспечение, способное обрабатывать синтаксис С++, но интересно было бы узнать о решениях для других языков.