Package: groovy.org.codenarc.rule.size

## [Groovy] Class CyclomaticComplexityRule

- groovy.org.codenarc.rule.size.CyclomaticComplexityRule

- Rule that calculates the Cyclomatic Complexity for methods/classes and checks against configured threshold values.

  The `maxMethodComplexity` property holds the threshold value for the cyclomatic complexity value for each method. If this value is non-zero, a method with a cyclomatic complexity value greater than this value is considered a violation. The `maxMethodComplexity` property defaults to 20.

  The `maxClassAverageMethodComplexity` property holds the threshold value for the average cyclomatic complexity value for each class. If this value is non-zero, a class with an average cyclomatic complexity value greater than this value is considered a violation. The `maxClassAverageMethodComplexity` property defaults to 20.

  The `maxClassComplexity` property holds the threshold value for the total cyclomatic complexity value for each class. If this value is non-zero, a class with a total cyclomatic complexity value greater than this value is considered a violation. The `maxClassComplexity` property defaults to 0.

  The `ignoreMethodNames` property optionally specifies one or more (comma-separated) method names that should be ignored (i.e., that should not cause a rule violation). The name(s) may optionally include wildcard characters ('*' or '?'). Note that the ignored methods still contribute to the class complexity value.

  This rule treats "closure fields" as methods. If a class field is initialized to a Closure (ClosureExpression), then that Closure is analyzed and checked just like a method.
  See Also:
    Cyclomatic Complexity Wikipedia entry.
    The original paper describing Cyclomatic Complexity.
    GMetrics Cyclomatic Complexity metric.
  Authors:
    Chris Mair

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `Class` | `astVisitorClass`
    `String` | `ignoreMethodNames`
    `int` | `maxClassAverageMethodComplexity`
    `int` | `maxClassComplexity`
    `int` | `maxMethodComplexity`
    `String` | `name`
    `int` | `priority`

- - ### Property Detail

    - #### Class astVisitorClass

    - #### String ignoreMethodNames

    - #### int maxClassAverageMethodComplexity

    - #### int maxClassComplexity

    - #### int maxMethodComplexity

    - #### String name

    - #### int priority