繁体   English   中英

你使用NDepend吗?

[英]Do you use NDepend?

我一直在尝试NDepend ,正在阅读一些关于它的博客文章,甚至还听过播客。 我认为NDepend可能是一个非常有用的工具,但我仍然没有看到我会在哪里使用它。

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

我想听听一些脚踏实地的现实世界的例子。

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

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

当开始使用大型重构时,例如将类型提取到其他程序集,这可以让你看到什么取决于什么,所以你不必做旧“将我的类型移动到另一个程序集,然后尝试编译并查看什么打破“

NDepend还有一个很好的视觉矩阵来查看这类信息。

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

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

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

您还可以加载项目的当前版本和之前的版本,并在它们之间运行查询,例如“向我显示所有具有<70%代码覆盖率的类型” - 这有助于您在现有代码库中引入更严格的规则。

这是一个很棒的工具,并不难学。 一开始就很可怕,只是因为它给你带来了大量的信息,但强烈推荐。

我也发现在理解复杂方法调用的结构方面它非常宝贵。 例如,我可以使用特定方法或字段传递调用所有方法,并且可以查看循环调用或不需要的依赖项是否存在可能的问题,或者是否存在比必要更复杂的路径等。

依赖图现在也是交互式的,所以我可以删除我目前不感兴趣的方法,并移动其他方法以便对所发生的事情进行良好的可视化。

我发现可视化程序集版本之间的更改很有用。 即使是给定版本中的更改快照......

我认为它可以在持续集成环境中发挥作用,您可以在其中设置CQL查询来衡量您感兴趣的代码指标(Cyclomatic Complexity,Long Methods等),然后您可以衡量这些领域的改进情况。

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

当您的应用程序具有大量程序集时,此工具很有用。 它帮助我找出代码依赖性以及版本之间的变化

我也使用NDepend比较一些程序集的两个版本。 NDepend有这个优秀的功能。 这让我了解了装配中的变化和工作进度,已添加的方法,删除的方法等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM