¿Fusión consciente del contexto?

¿Existe alguna herramienta de diferencia / fusión para los lenguajes de programación, que funciona de manera consciente de la sintaxis (como XML Diff Tool), haciendo más que comparar línea por línea (y opcionalmente ignorando espacios en blanco)?

Estoy interesado en un programa que realmente siga la sintaxis y los delimitadores del lenguaje, sugiriendo cambios sin romper la corrección sintáctica o agrupando declaraciones separadas en varias líneas. El comportamiento de ejemplo sería:

* al encontrar unaif(){ que introduce un nivel de anidamiento adicional agrupa automáticamente la llave de cierre} varias líneas a continuación con él.)

* mantenga elementos de sintaxis coincidentes juntos, evite tonterías, ya que eliminar un bloque tiende a crear:

 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;
  }

ersonalmente, me encantaría encontrar software capaz de manejar la sintaxis de C ++, pero también sería interesante conocer soluciones para otros lenguajes.

Respuestas a la pregunta(8)

Su respuesta a la pregunta