The logical negation operator should not be applied 3 or more times in a row

  • TRIPLE_NEGATION_OPERATOR
  • Code Quality
  • Low
  • No tags

This rule applies when the logical negation operator (!) is applied 3 or more times in a row.

A triple negation like !!!e is equivalent to the single negation !e.

Therefore, it is recommended to remove the unnecessary negation operations for readability and maintainability.

Noncompliant Code Example

View with compliant examples side by side
// Example 1
foo(!!!arg); // TRIPLE_NEGATION_OPERATOR alarm because 3 negations are used.

// Example 2
if ((cond1 && !(!!(cond2 && !cond3))) || cond4) { // TRIPLE_NEGATION_OPERATOR alarm because 3 negations are used.
    bar();
}

Compliant Code Example

View with noncompliant examples side by side
// Example 1
foo(!arg);

// Example 2
if ((cond1 && !(cond2 && !cond3)) || cond4) {
    bar();
}

Version

This rule was introduced in DeepScan 1.19.0.