# V3198. The variable is assigned the same value that it already holds.

The analyzer has detected that a variable is assigned a value that it already holds.

Let's look at the following example:

    public long GetFactorial(long it)
    {
      long currentValue = 1;

      for (int i = 1; i <= it; i++)
      {
        currentValue = currentValue * currentValue;
      }

      return currentValue;
    }

The 'GetFactorial' method should return the factorial value that matches the parameter. However, the method always returns 1. This happens because at each iteration of the loop, the 'currentValue' variable is assigned a value that it already holds.

To fix it, replace one of the multipliers with 'i':

    for (int i = 1; i <= it; i++)
    {
      currentValue = currentValue * i;
    }

## Additional diagnostic rule configuration

It is possible to ignore method and property return values for this diagnostic rule. To do this, add the following command to the '.pvsconfig' file:

    //V_3198_IGNORE_RETURN_VALUE:NamespaseName.TypeName.MethodName

When the command from the example is used, the diagnostic rule does not issue a warning if the return value of the 'NamespaseName.TypeName.MethodName' method is assigned to a variable.

You can use the same command to mark up properties.

This diagnostic is classified as:

CWE-1164