## Why is this an issue?

A boolean literal can be represented in two different ways: `true` or `false`. They can be combined with logical operators (`!, &&, ||, ==, !=`) to produce logical expressions that represent truth values. However, comparing a boolean literal to a variable or expression that evaluates to a boolean value is unnecessary and can make the code harder to read and understand. The more complex a boolean expression is, the harder it will be for developers to understand its meaning and expected behavior, and it will favour the introduction of new bugs.

### Exceptions

The use of literal booleans in comparisons which use identity operators (`===` and `!==`) are ignored.

## How to fix it

Remove redundant boolean literals from expressions to improve readability and make the code more maintainable.

### Code examples

#### Noncompliant code example

    if ($booleanVariable == true) { /* ... */ }
    if ($booleanVariable != true) { /* ... */ }
    if ($booleanVariable || false) { /* ... */ }
    doSomething(!false);

#### Compliant solution

    if ($booleanVariable) { /* ... */ }
    if (!$booleanVariable) { /* ... */ }
    if ($booleanVariable) { /* ... */ }
    doSomething(true);