如果文件中的函数被重新排序,则Diff应用程序会变得疯狂

时间:2011-01-01 23:23:09

标签: c# windows diff

我一直忙于在我们的项目中重构一个文件,作为我的更改的一部分,我将函数重新排序为更合理的方式。但是,现在当我试图检查我的更改时,我得到了一个烂摊子:diff应用程序不知道这些函数只是重新排序,并将80%的文件内容标记为已更改。

我试图将“超越比较”和“WinMerge”的差异看成相同的结果。 有什么设置可以帮助我吗?

标记为,我在Windows上使用C#。

3 个答案:

答案 0 :(得分:3)

BeyondCompare(可能还有其他工具)有一个功能,您可以选择一行并选择另一个文件中的哪一行作为参考。这样你至少可以逐个比较每种方法。根据您拥有的方法数量,这可能是一个选项。然而,它仍然需要一些手动和可能乏味的工作。

另一种方法就是重新排列方法而不改变任何东西并将其检入。然后,一旦你有了重新排列的类,你就可以使用diff工具对你在每个方法中做出的任何改变。

答案 1 :(得分:2)

传统文字差异仅基于文字内容。因此,您会看到80%的文件内容已更改。

Plastic SCM有一个名为 XDiff 的智能差异器。它能够找到移动或重构代码的差异。请查看this post以了解有关XDiff的更多信息。它也适用于merge支持。

Plastic SCM是一个完整的SCM解决方案。您可以安装它并仅使用差异/合并工具。

答案 2 :(得分:1)

您需要的是一个能够理解代码结构(表达式,语句,声明,函数)以及您对它们执行的操作类型的工具:插入,删除,移动,复制,复制和重命名等。就像你已经做了一堆“代码动作”。 根据定义,文本差异程序不能这样做。

我们的Smart Differencer可以为多种语言执行此操作:C#,C ++,COBOL,Java,PHP,... 它报告了语言结构方面的差异,并且对于行/列是精确的。