Resharper ложное возможное предупреждение nullReferenceException с параллельной библиотекой задачи

Рассмотрим этот пример

var task =Task.Factory.StartNew(()=>Console.WriteLine("test"));

task.ContinueWith(antecendent =>
        {
            ExceptionProcessor.HandleError(task.Exception.Flatten());
        }, TaskContinuationOptions.OnlyOnFaulted);

В этом примере resharper предсказывает, что в task.Exception.Flatten() возможно исключение возможного нулевого указателя, поскольку предполагается, что task.Exception может быть нулевым.

Но для всех реалистичных сценариев он не будет нулевым, так как параметр TaskContinuationOptions.OnlyOnFapted обеспечивает вызов метода только при возникновении исключения.

Итак, как мне сказать Resharper игнорировать все подобные предупреждения?

2 ответа

Решение

Служба поддержки Resharper приняла это за ошибку, и ее можно отследить здесь http://youtrack.jetbrains.com/issue/RSRP-316492

Я думаю, у вас есть несколько вариантов:

  1. Игнорируйте предупреждение в этом случае.
  2. Уменьшите серьезность всех "Возможных исключений NullReferenceException" до чего-то вроде подсказки или даже не отображать.
  3. Отключите этот экземпляр предупреждения с помощью комментария.
  4. Сделайте вид, что ReSharper прав и добавьте null проверять.

Мне не нравится #4, вы бы сделали свой код менее читабельным, чтобы ReSharper был доволен. Мне также не нравится № 3, это может сильно загрязнить ваш код этими комментариями. № 2 лучше, но я думаю, что № 1 - лучший вариант: "Posible NullReferenceException" всегда будет иметь ложные срабатывания, и поэтому вы должны использовать его как руководство: "будьте осторожны, что-то может быть не так", а не как строгий " Вы должны это исправить ".

Другие вопросы по тегам