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();
我在 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();