Подавить предупреждение Resharper в коде C#, если содержащая функция имеет определенный атрибут

В нашем коде есть несколько ложных срабатываний, говорящих «Возможное исключение System.NullRefrenceException». Методы, в которых возникают ошибки, отмечены [CustomAuthorizeAttribute], который наследуется от [AuthorizeAttribute]. В AuthorizeCore() реализации CustomAuthorizeAttribute мы вызываем ту же функцию и возвращаем false, если возвращаемое значение равно null.

Вот код:

[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 является ложным срабатыванием.

Есть ли простой способ подавить такие ложные срабатывания с помощью атрибутов или чего-то подобного? Или для решения этой проблемы нужен плагин или дополнительный код?

Любые предложения приветствуются!


person Fabian Pachner    schedule 16.01.2014    source источник


Ответы (1)


Вы можете добавить утверждение, что пользователь не null до if (user.HasFeatureX). ReSharper, вероятно, предложит вам исправление.

person Jørgen Fogh    schedule 25.01.2014
comment
Да, это возможно, по крайней мере, когда Resharper запускается в конфигурации отладки. Но это все равно означало бы, что я должен отмечать каждое вхождение вручную. Я искал что-то, что работает автоматически в зависимости от атрибута. - person Fabian Pachner; 29.01.2014