新版本的checkstyle提供了六种检查换型复杂度的标签
1.Boolean Expression Complexity(布尔表达式复杂度)
限制一个表达式中的&&、||、&、|、^等逻辑运算符的数量。
解释:过多的条件会导致代码难以读懂、调试和维护。
注意,&和|运算符并不仅仅是整数的位运算符,它们还是布尔运算符&&和||的非快捷版本。
报错:布尔表达式复杂度:14(最多:10)
使用:<property name="max" value="11"/>控制
2.Class Data Abstraction Coupling(类的数据抽象耦合)
这项度量会测量给定类中的其他类的实例化操作的次数。这种类型的耦合并不是由于继承或者面向对象范型而产生的。一般而言,任何将其他抽象数据类型作为成员的抽象数据类型都具有数据抽象耦合;因此,如果一个类中的某个局部变量是另一个类的实例(对象),那么就存在数据抽象耦合(DAC)。DAC越高,系统的数据结构(类)就会越复杂。
使用:<property name="max" value="11"/>控制,指的是一个类中引用另一个类的次数
3.Class Fan Out Complexity(类的分散复杂度)
一个给定类所依赖的其他类的数量。这个数量的平方还可以用于表示函数式程序(基于文件)中需要维护总量的最小值。
使用: <property name="max" value="11"/>控制,指一个类应用其他类的个数
4.Cyclomatic Complexity(循环复杂度)
检查循环复杂度是否超出了指定的限值。该复杂度由构造器、方法、静态初始化程序、实例初始化程序中的if、while、do、for、?:、catch、switch、case等语句,以及&&和||运算符的数量所测量。它是遍历代码的可能路径的一个最小数量测量,因此也是需要的测试用例的数量。通常1-4是很好的结果,5-7较好,8-10就需要考虑重构代码了,如果大于11,则需要马上重构代码!
使用:<property name="max" value="11"/>控制
5.Non Commenting Source Statements(非注释源码语句)(没使用)
通过对非注释源码语句(NCSS)进行计数,确定方法、类、文件的复杂度。这项检查遵守Chr. Clemens Lee编写的JavaNCSS-Tool中的规范。
粗略地说,NCSS度量就是不包含注释的源代码行数,(近似)等价于分号和左花括号的计数。一个类的NCSS就是它所有方法的NCSS、它的内部类的NCSS、成员变量声明数量的总和。一个文件的NCSS就是它所包含的所有顶层类的NCSS、imports语句和包声明语句数量的总和。
解释:太大的方法和类会难以阅读,并且维护成本会很高。一个较大的NCSS数值通常意味着对应的方法或类承担了过多的责任和/或功能,应当分解成多个较小的单元。
不可以用property--Max标签
6.NPath Complexity(NPath复杂度)
NPATH度量会计算遍历一个函数时,所有可能的执行路径的数量。它会考虑嵌套的条件语句,以及由多部分组成的布尔表达式(例如,A && B,C || D,等等)。
解释:在Nejmeh的团队中,每个单独的例程都有一个取值为200的非正式的NPATH限值;超过这个限值的函数可能会进行进一步的分解,或者至少一探究竟。
使用:<property name="max" value="11"/>控制