我在本系列前面的文章中已经解释了圈复杂性,它是令人讨厌的代码的一种先兆。
该图下面的部分指示出了一个方法的CheckStyle圈复杂度违规。
此外,此工具还收集代码库中每个方法的圈复杂度。
具有高圈复杂度值的测试方法几乎总是把事情弄得一团糟,无法轻易收场。
所以,在使用遗留代码库的情况下,测量圈复杂度特别有价值。
循环复杂性低的程序更容易理解,编辑起来风险也更小。
不过,圈复杂性并不是确定高风险代码的惟一复杂性度量。
一个好的经验法则是创建数量与将被测试代码的圈复杂度值相等的测试用例。
本系列的这一期在讨论测试时介绍了圈复杂度度量。
代码库中每个方法的非注释代码行的总数和圈复杂度。
圈复杂度是在我前面提到的那些研究期间开创的,它可以精确地测量路径复杂度。
CheckStyle是另一个具有类似的圈复杂度规则的开放源码项目。
Cyclomatic复杂性是决定COBOL程序中稳定性及实效性程度的评价手段。
可维护性指数由三个度量合成:圈复杂度、代码行数和计算复杂性。
要确定条件复杂度代码味道,需要确定方法的圈复杂度。
Java开发人员可使用一些开放源码工具来报告圈复杂度。
在这里,有趣的是我们可以使用圈复杂度而不是使用代码覆盖率来找出这个缺陷。
而覆盖集的近似大小则被作为下限(n+1,等价于某个图的环复杂性)。
在代码层次,MauriceHalstead的软件规格和TomMcCabe的秩复杂度模型被广泛接受。
复杂度指示器主要是圈复杂数V和代码中的声明语句数。
圈复杂性公式(cyclomaticcomplexityformula),被ThomasMcCabe首先提出,它是基于一个函数的分支数量来确定复杂度的。
PMD是另一个分析Java源文件的开源项目,它有一系列的规则,其中之一就是报告圈复杂度。
圈复杂度是衡量一个方法相对于另一个方法的相对复杂度的指标。
圈复杂度度量方法的相对复杂度。
圈复杂度用于衡量类型或方法在结构上的复杂度。
一种可以度量Java语言圈复杂度的非常不错的开源工具就是JavaNCSS工具(见参考资料)。
该图显示了过去的3个关键度量:代码覆盖、圈复杂度和每个方法的圈复杂度。
本文主要讨论两个指标,圈复杂度(cyclomaticcomplexity)和传入耦合(afferentcoupling)。
ckjm报告的圈复杂度数字表示这个类中所有方法的复杂度之和。