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

如果包含函数具有某个属性,则在C#代码中抑制重拾器警告,c#,attributes,annotations,resharper,suppress,C#,Attributes,Annotations,Resharper,Suppress,我们的代码中有一些误报,称为“可能的System.NullReferenceException”。 发生错误的方法由继承自[AuthorizeAttribute]的[CustomAuthorizeAttribute]标记。在CustomAuthorizeAttribute实现的AuthorizeCore()中,我们调用相同的函数,如果返回值为null,则返回false 代码如下: [CustomAuthorizeAttribute] // AuthorizeCore returns false

我们的代码中有一些误报,称为“可能的System.NullReferenceException”。 发生错误的方法由继承自[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警告为假阳性

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


任何建议都将不胜感激

您可以在
if(user.HasFeatureX)
之前添加一个断言,表明用户不是
null

ReSharper可能会为您提供修复建议。

是的,这是一种可能性,至少在调试配置中运行ReSharper时是这样。但这仍然意味着我必须手工标记每个事件。我正在寻找根据属性自动工作的东西。