我们的代码中有一些误报,说“可能的 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 警告是误报。
有没有一种简单的方法可以通过属性或类似的东西来抑制这种误报?或者这个问题的解决方案是否需要插件或附加代码?
任何建议表示赞赏!