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

时间:2016-08-03 15:28:04

标签: c# visual-studio visual-studio-2015 code-analysis

我在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(字符串,字符串)'声明一个变量' soapResult',类型为' string',它从未被使用或仅被分配给。使用此变量或将其删除。

我有什么东西在这里失踪吗?它不属于if / else,就像我遇到此错误的一些情况一样。但我认为,如果它被用于所有这个错误就不会被抛出。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

  

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

它告诉你,你只为它分配了一个值(你实际上已经做了两次,包括初始化为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();