1

我们的代码中有一些误报,说“可能的 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 警告是误报。

有没有一种简单的方法可以通过属性或类似的东西来抑制这种误报?或者这个问题的解决方案是否需要插件或附加代码?

任何建议表示赞赏!

4

1 回答 1

0

您可以添加一个断言 user is not nullbefore if (user.HasFeatureX)。ReSharper 可能会建议您进行修复。

于 2014-01-25T20:44:49.703 回答