outer_negation

NoteAdded in 0.1.0

What it does

Checks for usage of all(!x) or any(!x).

Why is this bad?

Those two patterns may be hard to read and understand, especially when the expression after ! is lengthy. Using !any(x) instead of all(!x) and !all(x) instead of any(!x) may be more readable.

In addition, using the ! operator outside the function call is more efficient since it only has to invert one value instead of all values inside the function call.

Example

any(!x)
all(!x)

Use instead:

!all(x)
!any(x)