从昨天开始,我正在使用Ndepend分析我们的一个项目(大部分功能都是免费的)以及我使用它的更多内容,而且我对此类软件的真正价值有疑问(代码 - 分析软件)。
让我解释一下,系统根据Rank每个指标构建一个关于系统和类的健康状况的报告。我认为这是一个很好的起点进行修改,但大多数顶级结果都在这里,因为它们在类中有超过100行(我们有大标题,我们确实使用VS注释样式)所以这不是什么大问题.. 。传入耦合级别(CA)的数量总是太高,这对于我们经常使用的界面来说几乎是真的...所以此刻我没有看到错误,但NDepend似乎不喜欢它(如果你有改进建议,告诉我,因为我认为没有必要)。对于我的大多数接口都太高的儿童数量,这个名为“NOC”的度量标准是一样的...
目前,唯一非常有用的指标是Cyclomatic Complexity ......
我的问题是:你觉得用自动代码分析器像NDepend分析代码是否值得?如果是的话,你如何过滤我提到的所有信息并不真正显示系统的真实健康状况?
答案 0 :(得分:2)
我不一定认为NDepend在软件工程中的结果是“好”或“坏”,总有一个很好的理由说明应用程序的设计方式。我认为它可以帮助我指出我的设计问题的报告,但在确定一个方法是否需要重构或者我的设计方式是否合适时,我还有最后的决定权。一般来说,如果值得或不值得,不要太过追赶。肯定是,我建议你仔细检查结果。这将帮助您从另一个角度查看您的设计,有时您可能会决定设计它的方式,以实现您的应用目标。
答案 1 :(得分:2)
实际上,指标只是NDepend的一个功能,您是否尝试使用VisualNDepend来让您比报告更深入地分析项目?通过阅读您的评论,我几乎可以肯定您没有使用NDepend UI(独立或集成在Visual Studio中),这是过滤有关代码库的数据的最佳方式。
我是NDepend的开发人员之一,我们使用它来分析我们自己的代码。基本上我们用Code Rules over LINQ Queries (CQLinq)编写自己的质量规则。这些规则自动确保我们的设计没有回归。在这里,您可以找到200 default code rules附近的列表。
以下是NDepend的一些独特功能,与代码指标无关:
编写CQLinq规则以确保我们没有架构缺陷,例如dependency cycles between our components,UI using directly the DB或与业务对象纠缠在一起的数据库。
确保我们没有测试代码覆盖率的问题(就像我们确保使用CQLinq规则,如果一个类应该被100%覆盖,it will remain 100% covered in the future)
实施无副作用的代码(immutable class /纯方法)
在执行新版本之前,可以将自上次发布以来的2次分析与代码审查更改进行比较。更具体地说,我喜欢使用NDepend来了解which method has been added and refactored since the last release, and is not 100% covered by tests。
为所有成员和类型(例如knowing which internal methods can be declared as private)提供最佳封装。这也与NDepend也支持的dead-code detection有关。
有关NDepend的完整功能列表,请参阅here。