2012-06-22 3 views
3

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

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

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

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

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

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

ответ

3

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

  1. игнорировать предупреждение в данном случае.
  2. Опустите серьезность всего «Posible NullReferenceException» на что-то вроде подсказки или даже не показывайте.
  3. Отключите этот экземпляр предупреждения комментарием.
  4. Подтвердите правильность и установите отметку null.

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

+0

Я согласен со всеми вашими комментариями, Игнорируя предупреждение кажется наилучший возможный случай, как сейчас .Но проблема, то вы не можете отличить реальные случаи, когда отсутствует нулевая проверка и ложные срабатывания –

+0

Да, я знаю, но я не знаю лучшего решения. – svick