Why is this an issue?

Creating objects that are not used is a vulnerability that can lead to unexpected behavior.

If this was done intentionally due to side effects in the object’s constructor, the code should be moved to a dedicated method.

How to fix it

Code examples

Noncompliant code example

public void Method(MyObject myObject)
{
    if (myObject is null)
    {
        new MyObject(); // Noncompliant
    }

    if (myObject.IsCorrupted)
    {
        new ArgumentException($"{nameof(myObject)} is corrupted"); // Noncompliant
    }

    // ...
}

Compliant solution

public void Method(MyObject myObject)
{
    if (myObject is null)
    {
        myObject = new MyObject(); // Compliant
    }

    if (myObject.IsCorrupted)
    {
        throw new ArgumentException($"{nameof(myObject)} is corrupted"); // Compliant
    }

    // ...
}