Существует ли какой-либо инструмент сравнения / слияния для языков программирования, который работает с учетом синтаксиса (например, 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;
return ret;
}
else return -1;
}
Лично я хотел бы найти программное обеспечение, способное обрабатывать синтаксис C ++, но было бы интересно узнать о решениях для других языков.