Skip to main content

boolean-assignment

Summary: Prefer if over boolean assignment

Category: Idiomatic

Avoid

package policy

import rego.v1

more_than_one_member := count(input.members) > 1

Prefer

package policy

import rego.v1

more_than_one_member if count(input.members) > 1

Rationale

Assigning the result of a boolean function is almost always redundant, as the boolean value returned by the expression rarely is used for anything but to determine whether to continue evaluation. Moving the condition to the body following an if will have the rule either evaluate to true or be undefined. For the few cases where false should be returned, using a default rule assignment is preferable, as it is guaranteed to be assigned a value even on undefined input:

package policy

import rego.v1

default more_than_one_member := false

# will be assigned `false` even if input.members is undefined
more_than_one_member if count(input.members) > 1

Configuration Options

This linter rule provides the following configuration options:

rules:
idiomatic:
boolean-assignment:
# one of "error", "warning", "ignore"
level: error

Community

If you think you've found a problem with this rule or its documentation, would like to suggest improvements, new rules, or just talk about Regal in general, please join us in the #regal channel in the Styra Community Slack!