虽然圈复杂度是一个值得衡量的指标,但我倾向于发现它是识别难以维护的代码的糟糕工具。特别是,我倾向于发现它只突出了某些类型的代码(例如解析器),并且错过了很难的递归,线程和耦合问题以及许多已经定义的反模式。
还有哪些其他工具可用于识别有问题的Java代码?
注意,我们已经使用了PMD和FindBugs,我认为它们非常适合方法级问题识别。
答案 0 :(得分:11)
我的经验是,在查看代码可维护性时最重要的指标是:
在检查由他人编写的代码时,包含动态技术通常很有用。只需通过分析器/代码覆盖工具运行常见的使用场景即可发现:
任何分析器,代码覆盖率和指标工具等常见嫌疑人通常会帮助您获取进行这些评估所需的数据。
答案 1 :(得分:7)
Google Testability Explorer检查单身人士和其他静态事物,例如设计中的难闻气味。 Metrics是一个Eclipse插件,可以测量人类已知的几乎所有代码度量。我用过,很容易推荐两者。
答案 2 :(得分:5)
Sonar尝试结合各种开源工具(包括PMD和Findbugs)的结果来识别复杂性和可维护性的“热点”。它与Maven和CI服务器(尤其是Hudson)很好地集成。
编辑 by extraneon
有一个Sonar网站available,其中分析了许多开源项目。我认为这表明应用了多少规则以及深入研究的程度。当然,你也可以禁用那些你觉得不那么有趣的规则。
Here是指标的解释。
答案 3 :(得分:1)
我从未使用它,但我觉得这很有趣并且很有用:
http://erik.doernenburg.com/2008/11/how-toxic-is-your-code/
我使用了这个,发现它非常有用,因为依赖性的可视化很好
http://www.headwaysoftware.com/products/structure101/index.php
答案 4 :(得分:0)
答案 5 :(得分:0)
.NET代码的工具NDepend可让您分析代码复杂性的许多方面,包括代码指标,如: 环形复杂性,嵌套深度,方法的内聚缺乏,测试覆盖率......
...包括依赖关系分析,包括致力于询问的Code Rules over LINQ Queries (CQLinq),代码中的复杂内容以及编写规则。提供200 default Code Rules周围。它们涉及Singleton等反模式,threading problems的检测,UI layer shouldn't use directly DB types等耦合问题的检测......
前段时间,我写了一篇文章,总结了代码复杂性的几个方面: Fighting Fabricated Complexity