5

我正在开发一个 SDK。当我发布新版本时,我想生成一份关于 API 差异的报告。这不是代码中的差异。大多数代码预计不会直接使用。公共类/方法是我感兴趣的。此外,我们采用了这样的约定,即命名空间中包含实现的任何内容都不应被 SDK 的客户端使用。因此,我正在寻找不在包含实现的命名空间中的公共接口、类和方法的差异。我想知道在两个版本之间删除、添加和修改了什么。

我从微软找到了一个名为 LibCheck 的工具,它在正确的范围内。我对 LibCheck 有几个问题。LibCheck 无法识别已修改的方法。它报告该方法已被删除和添加。它有时会报告一个方法已被删除和添加,但名称和参数都相同。我不知道在这些情况下它试图告诉我什么。最后,我不关心报告的布局。我想按名称空间以及程序集和类进行细分。

我知道这些报告是 XSLT 转换的结果,我可以让它们看起来像我想要的任何东西。还有其他问题,再加上微软对该工具普遍缺乏支持,让我不得不寻找替代方案。

4

2 回答 2

2

NDepend之类的工具非常适合这项工作,并且内置了用于在“API”级别进行差异报告的功能,而不仅仅是文本,例如:

比较构建和代码差异

NDepend有自己的代码查询语言CQL,可以用来编写高度自定义的静态分析报告:

代码查询语言

于 2011-01-25T07:28:48.847 回答
1

还有http://apichange.codeplex.com有一个不同的选项。像这样称呼它

ApiChange -diff -old $net2dir\System.dll -new $net4dir\System.dll

你应该得到一份报告。

于 2011-02-22T16:58:58.980 回答