【问题标题】:Suppress Resharper warning in C# code if containing function has a certain attribute如果包含函数具有特定属性,则在 C# 代码中抑制 Resharper 警告
【发布时间】:2014-01-16 18:27:34
【问题描述】:

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

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

欢迎提出任何建议!

【问题讨论】:

    标签: c# attributes annotations resharper suppress


    【解决方案1】:

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

    【讨论】:

    • 是的,这是可能的,至少当 Resharper 在调试配置中运行时。但这仍然意味着我必须手动标记每个事件。我一直在寻找可以根据属性自动工作的东西。
    猜你喜欢
    • 2018-03-20
    • 2017-06-05
    • 2019-07-30
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多