我在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,就像我遇到此错误的一些情况一样。但我认为,如果它被用于所有这个错误就不会被抛出。
感谢您的帮助。
答案 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();