include::../description.adoc[]

== Noncompliant Code Example

----
public void Sample(bool b)
{
    bool a = false;
    if (a) // Noncompliant
    {
        DoSomething(); // never executed
    }

    if (!a || b) // Noncompliant; "!a" is always "true", "b" is never evaluated
    {
        DoSomething();
    }
    else
    {
        DoSomethingElse(); // never executed
    }

    var d = "xxx";
    var res = d ?? "value"; // Noncompliant, d is always not null, "value" is never used
}
----

== Compliant Solution

----
public void Sample(bool b)
{
    bool a = false;
    if (Foo(a))
    {
        DoSomething();
    }

    if (b)
    {
        DoSomething();
    }
    else
    {
        DoSomethingElse();
    }

    var d = "xxx";
    var res = d;
}
----

== Exceptions

This rule will not raise an issue in either of these cases:

* When the condition is a single ``++const bool++``

----
const bool debug = false;
//...
if (debug)
{
  // Print something
}
----

* When the condition is the literal ``++true++`` or ``++false++``.

In these cases it is obvious the code is as intended.

include::../see.adoc[]

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
