Me gustaría una herramienta similar a diff que, en archivos determinados o forzados a ser tratados como fuentes C, respete los límites de la función. Es decir, no intenta que las líneas de una sola función coincidan con las líneas de diferentes funciones en el otro archivo.
Requisitos:
Deseable:
Podría considerar la familia de Smart Differencers de Semantic Designs (mi empresa).
Smart Differencer analiza el texto de origen de dos archivos para compararlos usando un analizador preciso de idioma (e incluso dialecto, por ejemplo, VisualStudio 2010), construye un árbol y luego encuentra una edición de árbol de distancia mínima para explicar en qué se diferencian, en términos de la gramática. Esto significa informar deltas como "expresión modificada", "sentencia movida", "variable renombrada" utilizando información precisa de líneas y columnas. Debido a que usa un analizador, ignora los cambios en los espacios en blanco (aunque puede pedirle que considere los comentarios como una opción que no es un espacio en blanco).
Se ejecuta de forma nativa en Windows, sin problemas en Linux en Wine utilizando los scripts sh proporcionados. es comercial La salida es similar a una diferencia porque es una herramienta de diferencias, en lugar de tener una GUI.
Smart Differencer funciona con muchos idiomas. Para la versión C, tiene algunas dificultades para analizar la fuente C con macros colocadas de manera incómoda y/o condicionales de preprocesador; tenga en cuenta que está tratando de analizar los archivos fuente sin el contexto de la unidad de compilación completa que normalmente alimenta a un compilador. Los archivos de encabezado del sistema tienden a ser bastante malos aquí, pero rara vez uno quiere compararlos. Puede mejorarlos brindándole algunos consejos sobre cosas que son macros; si está dispuesto a modificar su código fuente un poco, una vez, al mover condicionales incómodos, puede resolver este problema.
No es exactamente lo que OP quiere, pero el núcleo parece coincidir.
Ira Baxter
einpoklum
Ira Baxter
einpoklum