cyclomatic-complexity
Default severity: warning
Maximum: 10
Reports a declared function when its calculated complexity is greater than 10. A low complexity score makes control flow easier to understand, test, and change safely.
How the score is calculated
Section titled “How the score is calculated”Every function starts at 1. Strider adds one for each:
if,for,range, or type-switch statement;- non-default
caseclause; - non-default
selectcommunication clause; and &&or||binary expression.
The rule currently runs on function declarations. Branches in a function literal nested inside a declaration contribute to the enclosing declaration’s score.
func route() string { if first() { return "first" } if second() { return "second" } if third() { return "third" } if fourth() { return "fourth" } if fifth() { return "fifth" } if sixth() { return "sixth" } if seventh() { return "seventh" } if eighth() { return "eighth" } if ninth() { return "ninth" } if tenth() { return "tenth" } return "fallback"}func route(value any, state routeState) string { if text, ok := value.(string); ok { return routeText(text, state) } return routeOther(value, state)}Extract cohesive decisions into named helpers. Avoid splitting code solely to satisfy the number; each helper should represent a meaningful unit.
Configuration
Section titled “Configuration”The maximum cyclomatic-complexity score is fixed at 10. Configure the rule’s
severity and path exclusions in strider.toml:
[checks.rules.cyclomatic-complexity]severity = "error"excludes = ["generated/**"]