在两个重新格式化的C文件之间获得差异

时间:2011-03-02 21:31:39

标签: c

我最近收到了一些相对重要的功能,我从某人那里维护了一些软件。不幸的是,他并没有提供差异,而是只给了我整个源代码树,更糟糕的是,他似乎使用了某种代码美化,远远超出了我曾经使用或看过的东西,包括像< / p>

  • 在线条内的不同位置插入和移除空格。
  • 将一些条件分解为括号内的块,将一些条件转换为单行条件,并将一些条件转换为带有换行但不带括号的条件。
  • 将一些组合语句移到单独的行上,并将一些单独的语句组合成单行。
  • 在函数参数等场所插入和删除换行符。

对他的版本和旧版本的文件运行缩进(BSD)并不会使它们彼此接近。使用astyle也不行。在任何一种情况下,仍然有不同的格式样式的残余。

是否有任何C格式化程序基本上会删除尽可能多的格式,然后一致地格式化代码?或者有没有办法让格式化程序执行此操作?它不需要看起来非常好看,我只需要能够得到一个合理的差异,这样我就可以看到他实际改变了什么。

4 个答案:

答案 0 :(得分:4)

我会尝试使用tr -s ' \t\r\n' ' '或同等数据删除尽可能多的空格,然后将结果反馈回indent。 (遗憾的是,不能执行tr -d,因为这会损坏令牌边界。)

答案 1 :(得分:3)

uncrustify是你可以尝试的另一种选择 - 极端可配置性有点压倒性,但它能够完成大部分(如果不是全部)你提到的事情。

答案 2 :(得分:2)

Netbeans和Eclipse C开发包附带的重新格式化程序非常具有攻击性,也许您可​​以试用它们。

答案 3 :(得分:1)

您可以预处理这两个文件,然后区分它们。