我们的代码中有一些误报,说“可能的System.NullRefrenceException”。 发生错误的方法用[CustomAuttribute]继承自[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
{
...
}
}
因此,如果我们进入该函数,我们已经检查过我们的用户不是null。总之,Resharper警告是误报。
有没有一种简单的方法可以通过属性或类似的东西来抑制这种误报? 或者此问题的解决方案是否需要插件或其他代码?
任何建议都表示赞赏!
答案 0 :(得分:0)
您可以在null
之前添加用户不是if (user.HasFeatureX)
的断言。
ReSharper可能会建议您修复。