Ndepend和其他自动代码分析器的相关性是什么?

5
自昨天以来,我一直在使用Ndepend(大多数功能免费)分析我们的一个项目,但是我越用它,就越怀疑这种软件(代码分析软件)的真正价值。
让我解释一下,该系统通过排名每个指标来建立有关系统和类健康状况的报告。我认为这是一个很好的起点来进行修改,但大多数顶部结果都是因为类内有超过100行代码(我们有大标题并且使用VS注释样式),所以这不是什么大问题...然后,入度耦合级别(CA)的数量总是太高,对于我们经常使用的接口来说,这几乎是非常真实的...所以此时我没有看到任何问题,但似乎NDepend不喜欢它(如果你有改进建议,请告诉我,因为我没有看到需要改进的地方)。对于称为“NOC”的指标,我的大多数接口子类都太高了...
目前,唯一非常有用的指标是圆形复杂度...
我的问题是:您认为使用自动代码分析器(如NDepend)分析代码是否值得?如果是的话,您如何过滤掉我提到的所有不真正显示系统健康状况的信息?

显然现在有点过时了,但我认为你必须看看那些接口。很多子类很可能突出了单一职责原则的破坏。这反过来可能会影响您的传入耦合。这反过来又会影响您代码的可维护性(更高的传入耦合会导致在进行更改时更加痛苦)。所以它有用吗?在我看来,是的。只需要查看您的代码并了解指标试图告诉您什么,以便使其更好。 - pms1969
2个回答

2
我不认为在软件工程中,NDepend的结果是“好”或“坏”的,一个应用程序被设计成这样总有充分的理由。我把它看作一个报告,可以帮助我指出设计中存在的问题,但是最终决定是否需要重构方法或者它的设计方式是否正确还是由我来决定。一般来说,不要过于纠结于回答是否值得使用NDepend,它肯定是值得的,相反,我建议你仔细审查结果。这将帮助你从另一个角度看待你的设计,并且可能会有时候你会认为你设计的方式是实现应用程序目标的最佳方式。

2
实际上,指标只是NDepend的一个功能,你尝试使用VisualNDepend了吗?它可以让你比报告更深入地分析项目。通过阅读你的评论,我几乎确定你没有使用过NDepend UI(独立或集成在Visual Studio中),这是筛选有关代码库数据的最佳方式。
我是NDepend的开发人员之一,我们经常使用它来分析自己的代码。基本上,我们使用Code Rules over LINQ Queries (CQLinq)编写自己的质量规则。这些规则自动确保我们的设计没有退化。在这里,您将找到大约200个默认代码规则的列表。
以下是NDepend的一些独特功能,与代码指标无关:
使用CQLinq规则确保我们没有架构缺陷,例如组件之间的依赖循环、UI直接使用DB或DB与业务对象纠缠在一起。
确保我们没有测试覆盖率问题(例如,通过CQLinq规则确保如果一个类应该达到100%覆盖率,它将来仍然保持100%覆盖率)。
强制使用无副作用的代码(不可变类/纯方法)。
利用比较2个分析的能力,在发布新版本之前审查自上次发布以来的更改。具体而言,我喜欢使用NDepend了解哪些方法自上次发布以来已添加和重构,并且未被100%的测试覆盖。
为所有成员和类型提供最佳封装(例如,知道哪些内部方法可以声明为私有)。这也与NDepend支持的死代码检测相关。
“要查看 NDepend 的完整功能列表,请单击此处。”

我已经玩了一点(2小时)VisualNDepend。我不是在说这个产品没有做好,但让我们说这个矩阵...好吧,我的日志模块有一个高耦合度...这很正常...之后我发现持久性Facade和BusinessObject之间的耦合度很高...这也很正常... - Patrick Desjardins
所有这些“正常”情况在NDepend(和其他具有度量标准的软件)中都被突出显示,它们真的很重要吗?这是我的问题。 +1 对于你的回答,我想知道意见和个人经验,但你还没有说服我使用这样的工具 ;) - Patrick Desjardins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接