获取引用程序集的调用计数
Obtaining a Referenced Assembly's Call Count
我正在编写一份文档,分析大型代码库的质量和可维护性。作为本报告的一部分,我希望在解决方案中包括一个程序集对另一个程序集的引用次数。这将让人了解每个程序集与另一个程序集的耦合程度。
Visual Studio2015 Enterprise(或第 3 方插件)中是否有工具可以给我这个数字?
到目前为止,我已经尝试了 Visual Studio 的代码映射工具,但这似乎只是生成了一个带有箭头的可视化,然后我必须手动计算它,而且这似乎只对 class/struct-level,而不是每个 class/struct.
中的单个参考文献的数量
您可以使用 FxCop / 代码分析来执行此操作,这有很多 maintainability rules,您最感兴趣的可能是:
CA1506: Avoid excessive class coupling
This rule measures class
coupling by counting the number of unique type references that a type
or method contains.
我认为 class 的阈值为 80,方法的阈值为 30。
设置起来比较容易,基本上你只需要在一个项目上配置即可:
打开规则集可以让您选择要运行的规则(以及它们是警告还是错误),有很多很多规则。
NDepend (http://www.ndepend.com/) 提供此功能。对于您描述的探索性质量分析类型,它在更笼统的术语中也很有帮助。
为了扩展 Nicole 的回答,我测试了 NDepend 的试用版,我相信我已经在他们称之为 "Dependency Matrix" 的东西中找到了我正在寻找的数字。我的理解如下
绿色数字表示当前行中的程序集引用与当前列中的数字相关的程序集的次数。蓝色数字表示当前行中的程序集被与当前列中的数字相关的程序集引用了多少次。由于程序集不能对其自身进行外部引用,因此对角线上不能出现数字。
但是我不明白的是为什么,例如,单元格0、4中的数字是93,而单元格4、0中的数字是52;这些数字不应该相等吗?程序集 0 仅被程序集 4 使用,与程序集 4 使用程序集 0 的次数相同 - 这些数字怎么会不同?
更新:我观看了有关此工具的 PluralSight 视频,发现绿色框中的数字表示引用程序集中有多少方法引用了被引用程序集。相应蓝色框中的数字表示引用程序集正在使用引用程序集中的方法数。这些数字都不能精确地表示一个程序集对另一个程序集的调用次数(因为一个方法可以包含多个引用),但我相信它确实提供了足够的粒度级别,因为方法应该符合 SRP,因此方法中的所有引用都应该与单一行为有关。
我正在编写一份文档,分析大型代码库的质量和可维护性。作为本报告的一部分,我希望在解决方案中包括一个程序集对另一个程序集的引用次数。这将让人了解每个程序集与另一个程序集的耦合程度。
Visual Studio2015 Enterprise(或第 3 方插件)中是否有工具可以给我这个数字?
到目前为止,我已经尝试了 Visual Studio 的代码映射工具,但这似乎只是生成了一个带有箭头的可视化,然后我必须手动计算它,而且这似乎只对 class/struct-level,而不是每个 class/struct.
中的单个参考文献的数量您可以使用 FxCop / 代码分析来执行此操作,这有很多 maintainability rules,您最感兴趣的可能是:
CA1506: Avoid excessive class coupling
This rule measures class coupling by counting the number of unique type references that a type or method contains.
我认为 class 的阈值为 80,方法的阈值为 30。
设置起来比较容易,基本上你只需要在一个项目上配置即可:
打开规则集可以让您选择要运行的规则(以及它们是警告还是错误),有很多很多规则。
NDepend (http://www.ndepend.com/) 提供此功能。对于您描述的探索性质量分析类型,它在更笼统的术语中也很有帮助。
为了扩展 Nicole 的回答,我测试了 NDepend 的试用版,我相信我已经在他们称之为 "Dependency Matrix" 的东西中找到了我正在寻找的数字。我的理解如下
绿色数字表示当前行中的程序集引用与当前列中的数字相关的程序集的次数。蓝色数字表示当前行中的程序集被与当前列中的数字相关的程序集引用了多少次。由于程序集不能对其自身进行外部引用,因此对角线上不能出现数字。
但是我不明白的是为什么,例如,单元格0、4中的数字是93,而单元格4、0中的数字是52;这些数字不应该相等吗?程序集 0 仅被程序集 4 使用,与程序集 4 使用程序集 0 的次数相同 - 这些数字怎么会不同?
更新:我观看了有关此工具的 PluralSight 视频,发现绿色框中的数字表示引用程序集中有多少方法引用了被引用程序集。相应蓝色框中的数字表示引用程序集正在使用引用程序集中的方法数。这些数字都不能精确地表示一个程序集对另一个程序集的调用次数(因为一个方法可以包含多个引用),但我相信它确实提供了足够的粒度级别,因为方法应该符合 SRP,因此方法中的所有引用都应该与单一行为有关。