代码的复杂性分析工具,而不仅仅是圈复杂度(Code complexity analysis tool

2019-06-26 04:35发布

虽然圈复杂度是一个值得指标,我倾向于认为它是识别难以维护的代码很糟糕的工具。 特别是,我倾向于认为它只是强调了某些类型的代码(例如解析器)和惦记困难递归,线程和耦合问题以及许多已定义的反模式。

其他什么工具可用来识别有问题的Java代码?

请注意,我们已经使用PMD和FindBugs的,我相信是伟大的方法级别的确定问题。

Answer 1:

我的经验是,在看代码的可维护性时最重要的指标是:

  • 圈复杂度,以确定可能是很难理解大量代码/修改。
  • 嵌套深度,要找到类似的斑点(高嵌套深度自动高CC,但不一定是周围的其他方式,所以得分上都重要的是看)。
  • 风扇/输出,以获得方法/类和各个方法的实际重要性之间的关系的一个更好的视野。

当检查被写入别人的代码,它往往是有用的,包括动态技术。 只需通过一个分析器/代码覆盖工具运行常见的使用场景,发现:

  • 可以真正执行大量的代码(分析器是为这个伟大的,只是忽略了定时信息,并在命中次数看,而不是)。
  • 代码覆盖率是伟大的发现(几乎)死代码。 为了防止您投资于重构代码时间很少反正执行。

通常的嫌疑人,如任何分析器,代码覆盖和度量工具通常会帮助你获得做这些评估所需要的数据。



Answer 2:

谷歌浏览器可测性检查,例如为单身人士和其他静态东西是设计不好的气味。 指标是衡量人类已知的几乎每一个代码度量一个Eclipse插件。 我使用,并且能够很容易地推荐两种。



Answer 3:

声纳试图识别的复杂性和可维护性的“热点”相结合的各种开源工具(包括PMD和FindBugs的)结果。 它与Maven和CI服务器(尤其是哈德森)很好地集成。

编辑由extraneon

有一个声纳部位可用的地方很多开源项目进行了分析。 我认为,这显示相当不错的规则做了多少应用,以及在多大程度上向下钻取去。 你当然也可以禁用规则,你不觉得很有趣。

这里是指标的解释。



Answer 4:

我从来没有使用过,但我发现这相当有趣和promissing:

http://erik.doernenburg.com/2008/11/how-toxic-is-your-code/

我用这一个,并发现它非常有用的,因为依赖的不错的可视化

http://www.headwaysoftware.com/products/structure101/index.php



Answer 5:

你已经在使用静态分析工具是相当标准。 如果你正在使用Eclipse,尝试寻找这里更多的代码分析工具。

艾玛提供了代码覆盖分析,虽然这是真正的测试。



Answer 6:

该工具NDepend的用于.NET代码将让你对代码进行分析的复杂性,在许多方面,包括代码度量,如:圈复杂度,嵌套深度,缺乏方法的凝聚力,通过测试覆盖率...

......包括依赖性分析,包括了LINQ查询编码规则(CQLinq)致力于问,什么是复杂的在我的代码,并写入规则。 大约200默认编码规则设置。 他们关注的反模式,如单身 ,检测线程问题 ,检测的耦合问题,如UI层不应直接使用DB类型 ...

前阵子,我写了一篇文章,总结代码复杂度几个方面: 打击捏造复杂性



文章来源: Code complexity analysis tools beyond cyclomatic complexity