Visual Studio代码分析 - 当变量正在使用
问题描述:
我使用的是Windows 7的Visual Studio代码分析 - 当变量正在使用
VS2015代码分析规则CA1804(http://msdn.microsoft.com/library/ms182278.aspx)指出,我没有使用一个变量,将其删除CA1804抛出。但是,我在代码中进一步使用了这个变量。这在整个解决方案中发生在数百个地方。代码块看起来是这样的:
[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”,类型为“字符串',这是从来没有使用或只分配给。使用此变量或将其删除。
有什么我在这里失踪?它不在if/else之内,就像我遇到这个错误的一些实例。但我认为,如果它被使用,所有这个错误不会被抛出。
感谢您的任何帮助。
答
仔细阅读分析消息,请注意我强调了一点:
错误CA1804“的ValidateUser(字符串,字符串)”声明一个变量,“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();
我很困惑,甚至编译。正如所写的,当您尝试返回它时,“isValidated”甚至不在范围内。 – EJoshuaS