如果包含函数具有某个属性,则在C#代码中抑制Resharper警告

时间:2014-01-16 18:27:35

标签: c# attributes annotations resharper suppress

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

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

任何建议都表示赞赏!

1 个答案:

答案 0 :(得分:0)

您可以在null之前添加用户不是if (user.HasFeatureX)的断言。 ReSharper可能会建议您修复。