我一直在尝试 依赖型, ,阅读了一些有关它的博客文章,甚至听过一个播客。我认为 NDepend 可能是一个非常有用的工具,但我仍然不知道在哪里使用它。

你如何使用它?你用吗,为什么?为什么不?

我想听听一些现实世界中的实际例子。

有帮助吗?

解决方案

在过去的几年里,我广泛使用了 NDepend。基本上它是一个依赖关系分析工具,因此这可以帮助您解决许多依赖关系相关的问题。

我使用它的主要用途之一是检查程序集、类型和方法之间的依赖关系。这有助于我了解类型之间的耦合是否失控,也有助于我发现重构机会。

当开始大规模重构时,例如提取。将类型移动到其他程序集,这可以让您看到什么依赖于什么,这样您就不必执行旧的“将我的类型移动到另一个程序集,然后尝试编译并看看有什么问题”

NDepend 还有一个很棒的视觉矩阵,用于查看此类信息。

此外,它还有一种出色的查询语言 CQL,可让您编写自定义查询。这些可以是简单的事情,例如“向我显示调用此方法的所有方法”,查询以突出显示死代码,查询循环复杂度、耦合等,等等。

反过来,它可以集成到构建过程中,因此您可以基于 CQL 查询生成构建警告/失败,例如“如果方法的代码超过 100 行但没有注释,则构建失败”(这是一个示例) - 我并不是说这个特定的指标是一件好事)。

它还可以导入代码覆盖率数据,并为您提供代码覆盖率很少的区域的可视化表示,并允许您针对代码覆盖率信息运行 CQL 查询(例如显示代码覆盖率低于 70% 的方法)

您还可以加载项目的当前构建和以前的构建,并在它们之间运行查询,例如“显示全部 新的 代码覆盖率 <70% 的类型”——这有助于您在现有代码库上引入更严格的规则。

这是一个很棒的工具,而且学习起来并不太难。一开始它很吓人,只是因为它为您提供了大量信息,但强烈推荐。

其他提示

我还发现它在理解复杂的方法调用的结构非常宝贵的。我可以调用的所有方法传递地使用特定的方法或字段,例如,和可以看到,如果存在具有圆形的呼叫,或不希望的依赖关系,或路径它们是必要以上旋绕等

可能出现的问题

在依赖图目前也是互动的,所以我可以删除它,我目前不在兴趣的方法,并四处移动别人给正在发生的事情的一个很好的可视化。

我发现是有用的可视化组件的版本之间的变化。即使对于变化的在给定释放快照...

我觉得它闪耀在持续集成环境中,你可以设置CQL查询来衡量代码度量你感兴趣的(圈复杂度,龙的方法,等等),然后就可以通过测量在这些领域的改进时间。

其实这个工具是有用的,如果你有例如接口,其是由不同的人/供应商开发的应用程序的另一部分使用。每次你想改变你必须找出谁在使用你的接口,以避免破坏它的代码(汇编不会建)接口 这适用于更大的项目。

此工具是有用的,当你的应用程序组件的数量巨大。 它可以帮助我找到了版本之间的代码依赖和以及修改

我还使用NDepend的比较一些组装的两个版本。 NDepend的有这样的外观极好功能。那让我了解删除已添加的变化和组装工作进度,方式,方法等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top