我有一个来自C程序的两个文件。我猜两者都属于完全相同的版本。使用“diff”我可以知道差异在哪里,可能包含3行。问题是第二个文件是给另一个程序员使用完全不同的修改,括号样式等,但可能只改变我需要找到的那3行。如果我使用“差异”,我会得到很多不同。所以我的问题是,在这种情况下,我怎么能在代码方面知道差异在哪里。我试图对两个文件应用相同的格式,然后使用“diff”,但它在我的情况下不起作用。
答案 0 :(得分:1)
使用pretty-printer格式化两个文件,然后执行diff。
答案 1 :(得分:0)
diff
采用-w
选项,告诉它在比较行时忽略所有空格。但是,如果一个文件中的一行可能在另一个文件中被分成两行或更多行,那么@Jeff Foster的建议可能会更好。
答案 2 :(得分:0)
您可以使用我们的SmartDifferencer计划。它通过使用真正的解析器解析它们来比较两个代码文件(使其完全独立于格式和位置或更改注释), 比较语法树,然后报告编辑操作(复制,移动,插入,块内重命名变量)的变化,以解释发生的情况。因此,您会看到langauge结构而不是线条的差异,这通常会产生更小的差异结果。如果实际文字值相同,它甚至会忽略数字基数和字符串转义的变化。
对于诸如C#和Java之类的语言,这非常有效。 C有点问题,因为人们在不知道所有定义和#includes等的情况下编写无法解析的滥用C代码。因此它不会处理某些文件而你将会回归到传统的差异,可能会增加另一位作者建议的格式化程序,但这仍然只会给你行差异。 C ++可以说与C有同样的问题,但实际上C ++代码并不是那么滥用。