Слияние с учетом контекста?

Есть ли инструмент сравнения / слияния для языков программирования, который работает с учетом синтаксиса (например, 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 ++, но было бы интересно знать о решениях для других языков.

32
задан Ira Baxter 26 February 2011 в 04:01
поделиться