如果包含函数具有某个属性,则在C#代码中抑制重拾器警告
我们的代码中有一些误报,称为“可能的System.NullReferenceException”。 发生错误的方法由继承自[AuthorizeAttribute]的[CustomAuthorizeAttribute]标记。在CustomAuthorizeAttribute实现的AuthorizeCore()中,我们调用相同的函数,如果返回值为null,则返回false 代码如下:如果包含函数具有某个属性,则在C#代码中抑制重拾器警告,c#,attributes,annotations,resharper,suppress,C#,Attributes,Annotations,Resharper,Suppress,我们的代码中有一些误报,称为“可能的System.NullReferenceException”。 发生错误的方法由继承自[AuthorizeAttribute]的[CustomAuthorizeAttribute]标记。在CustomAuthorizeAttribute实现的AuthorizeCore()中,我们调用相同的函数,如果返回值为null,则返回false 代码如下: [CustomAuthorizeAttribute] // AuthorizeCore returns 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时是这样。但这仍然意味着我必须手工标记每个事件。我正在寻找根据属性自动工作的东西。