Closed. 这个问题正在寻求书籍、工具、软件库等的推荐。不满足堆栈溢出指南 /help/closed-questions 。目前不接受答案。
我希望能够在两个程序集之间进行代码级差异; Reflector 的 Diff 插件是迄今为止我发现的最接近的东西,但是比较整个程序集是一个手动过程,需要我深入到每个命名空间/类/方法。
到目前为止,我发现的其他工具似乎仅限于 API 级别(命名空间、类、方法)差异,这无法满足我的需求。
有谁知道这样的工具吗?我的要求(从最高到最低)是:
能够分析/反映code 同一程序集的两个版本的内容并报告差异
接受一个文件夹或一组程序集作为输入;快速比较它们(类似于 WinMerge 的文件夹差异)
能够快速确定两个程序集在代码级别(不仅仅是 API 级别)是否等效
允许轻松深入查看差异
导出有关差异的报告
(我个人喜欢 WinMerge 进行文本差异,因此具有类似界面的应用程序会很棒)
工具NDepend http://www.NDepend.com 提供许多功能来处理 .NET 代码差异。
面板按变更搜索 专门用于浏览程序集代码差异:
提出了许多约束差异和演化的代码规则。它们可以成为您自己编写或根据您的需求进行调整的良好开端。例如看一下规则:
过去 100% 覆盖的类型,但现在不再 http://www.ndepend.com/DefaultRules/webframe.html?Q_Types_that_used_to_be_100__covered_but_not_anymore.html
// <Name>Types that used to be 100% covered but not anymore</Name>
warnif count > 0
from t in JustMyCode.Types where
t.IsPresentInBothBuilds() &&
t.OlderVersion().PercentageCoverage == 100 &&
t.PercentageCoverage < 100
let culpritMethods = t.Methods.Where(m => m.PercentageCoverage < 100)
select new {t, t.PercentageCoverage, culpritMethods }
or also:
API 重大变更:方法 http://www.ndepend.com/DefaultRules/webframe.html?Q_API_Breaking_Changes__Methods.html
避免使复杂的方法变得更加复杂 http://www.ndepend.com/DefaultRules/webframe.html?Q_Avoid_making_complex_methods_even_more_complex_%28Source_CC%29.html
避免通过类型测试降低代码覆盖率 http://www.ndepend.com/DefaultRules/webframe.html?Q_Avoid_decreasing_code_coverage_by_tests_of_types.html
从现在开始,所有添加或重构的类型都应遵守基本质量原则 http://www.ndepend.com/DefaultRules/webframe.html?Q_From_now,_all_types_added_or_refactored_should_respect_basic_quality_principles.html
避免将不可变类型转换为可变类型 http://www.ndepend.com/DefaultRules/webframe.html?Q_Avoid_transforming_an_immutable_type_into_a_mutable_one.html
启发式查找从一个名称空间或程序集移动到另一个名称空间或程序集的类型 http://www.ndepend.com/DefaultRules/webframe.html?Q_Heuristic_to_find_types_moved_from_one_namespace_or_assembly_to_another.html
要开始使用 NDepend 比较功能,请查看文档:
与 Visual Studio 内的高级代码差异 http://www.ndepend.com/Doc_VS_Diff.aspx :解释如何使用 NDepend 构建比较功能,在 Visual Studio 和 Visual NDepend 独立 UI 的上下文中 .
报告代码差异 http://www.ndepend.com/Doc_CI_Diff.aspx :解释如何使用 NDepend 构建比较功能,在报告的背景下 .
免责声明:我为 NDepend 工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)