【发布时间】:2014-01-16 18:27:34
【问题描述】:
我们的代码中有一些误报,显示为“可能的 System.NullRefrenceException”。 发生错误的方法标有从 [AuthorizeAttribute] 继承的 [CustomAuthorizeAttribute]。在CustomAuthorizeAttribute的实现的AuthorizeCore()中,我们调用同一个函数,如果返回值为null,则返回false。
代码如下:
[CustomAuthorizeAttribute] // AuthorizeCore returns false if GetUser(HttpContext) returned null
public ActionResult Get()
{
var user = GetUser(HttpContext);
if (user.HasFeatureX) // Possible System.NullReferenceException
{
...
}
...
}
[CanBeNull]
public static User GetUser([NotNull] HttpContextBase context)
{
...
}
protected override sealed bool AuthorizeCore(HttpContextBase httpContext)
{
if (GetUser(m_)context) == null)
{
return false;
}
else
{
...
}
}
所以如果我们进入函数,我们已经检查了我们的用户不是空的。总之,Resharper 警告是误报。
有没有一种简单的方法可以通过属性或类似的东西来抑制这种误报? 还是这个问题的解决需要插件或者额外的代码?
欢迎提出任何建议!
【问题讨论】:
标签: c# attributes annotations resharper suppress