c# - 有谁知道 C# 的高级差异工具?

标签 c# .net asp.net visual-studio diff

我正在寻找一个 diff 工具,它可以分析我的代码并告诉我在逐个构造的基础上发生了什么变化。

例如,如果我从文件开头剪切并粘贴一个方法并将其放在末尾但保持该方法不变,我不希望它被标记。但是,如果我在该方法中插入一行代码或更改某些内容,它会将其标记为已更改。

我使用过各种差异工具,但它们似乎都无法告诉您已插入、删除或更改了行,但无法以任何逻辑方式告诉您发生了什么变化。如果我定期重新排列代码文件的布局时 diff 工具能够跟上,那就太好了。

有没有人有这样的工具?

最佳答案

我使用 http://winmerge.org/

由于 longest common subsequence 的方式,我认为您无法按照您的要求进行操作算法适用于这些工具。

即使您的函数被重新安排,并且您的源文件的功能保持不变,但由于 LCS 的性质,它仍然会显示为不同。

编辑:
这有点牵强,但如果您有更大的雄心,您可以编写自己的内容来满足您的确切需求。

您可以使用正则表达式提取源文件中的每个方法,并根据其名称分别对每个方法执行 LCS 差异。您可以将您的代码存储为一个 Dictionary (key,value),以便键是方法的名称,值是函数的字符串。然后你只需将你的 dictionary_orig['method'] 与你的 dictionary_new['method'] 进行比较。

除此之外,我不知道您将如何完成您所寻找的。

关于c# - 有谁知道 C# 的高级差异工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161216/

相关文章:

c# - 不执行 linq 导致内存分配 C#

c# - 从一组枚举值中选择

c# - 如何使用线程池来处理新线程中的每个连接

.net - ASP.NET MVC-使用Controller相应地设置主视图

c# - 将参数从一个 winform 应用程序发送到另一个应用程序并填充文本框

.net - 使用WIX self 更新应用程序安装?

.net - 获取类派生自的抽象类类型

jquery - HTML/Jquery/Javascript 身份验证和授权模式 (ASP.NET)

c# - 无法从单例 'MyDbContext' 使用范围服务 'Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor'

python - 使用 Python 的请求发送 ASP.net POST