Visual Studio 代码分析 - 使用变量时抛出 CA1804

Visual Studio Code Analysis - CA1804 thrown when variable is being used

我在 Windows 7.

上使用 VS2015

代码分析规则 CA1804 (http://msdn.microsoft.com/library/ms182278.aspx) 声明我没有使用变量并删除它。但是,我在我的代码中进一步使用了这个变量。整个解决方案的数百个地方都在发生这种情况。代码块如下所示:

[WebMethod]
public bool ValidateUser(string userName, string password)
{
    string soapResult = String.Empty;
    try
    {
        // code here
        using (StreamReader rd = new StreamReader(responseStream))
        {
            soapResult = rd.ReadToEnd();
        }
        // code here
        bool isValidated = true;
    }
    catch (Exception e)
    {
        // throw error
    }

    return isValidated;
}

我从代码分析中得到这个错误:

错误 CA1804 'ValidateUser(string, string)' 声明了一个类型为 'string' 的变量 'soapResult',它从未被使用或仅被分配给。使用此变量或将其删除。

我在这里遗漏了什么吗?它不在 if/else 之内,就像我收到此错误的某些实例一样。但我想如果它被使用了,这个错误就不会被抛出。

感谢您的帮助。

仔细阅读分析消息,注意我突出显示的部分:

Error CA1804 'ValidateUser(string, string)' declares a variable, 'soapResult', of type 'string', which is never used or is only assigned to. Use this variable or remove it.

它告诉你你只给它赋值(你实际上做了两次,包括初始化 string.Empty)但是你从不使用这个值。所以这实际上是在浪费一个变量。

您应该做的是使用值,例如:

soapResult = rd.ReadToEnd();
if(soapResult.Contains("something")
{
    isValidated = true;
}
else
{
    //Not needed but added it to better show how this works in context
    isValidated = false;
}

或者完全删除它并丢弃从 StreamReader:

中获得的结果
rd.ReadToEnd();