В нашем коде есть несколько ложных срабатываний, говорящих «Возможное исключение 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 является ложным срабатыванием.
Есть ли простой способ подавить такие ложные срабатывания с помощью атрибутов или чего-то подобного? Или для решения этой проблемы нужен плагин или дополнительный код?
Любые предложения приветствуются!