Resharper false可能带有任务并行库的nullReferenceException警告

时间:2012-06-22 17:05:51

标签: c# resharper task-parallel-library resharper-6.1

考虑这个例子

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

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

在此示例中,resharper预测task.Exception.Flatten()中可能存在空指针异常,因为它假定task.Exception可能为null。

但对于所有实际场景,它不会为null,因为参数TaskContinuationOptions.OnlyOnFaulted确保仅在发生异常时才调用该方法。

那么我如何告诉Resharper忽略所有类似的警告?

2 个答案:

答案 0 :(得分:3)

我认为你有几种选择:

  1. 在此实例中忽略警告。
  2. 将所有“Posible NullReferenceException”的严重性降低到类似提示,甚至不显示。
  3. 通过评论禁用此警告实例。
  4. 假装ReSharper是正确的,并添加null支票。
  5. 我不喜欢#4,你会让你的代码不那么可读,只是为了让ReSharper感到高兴。我也不喜欢#3,这可能会大量污染你的代码。 #2更好,但我认为#1是最好的选择:“Posible NullReferenceException”总是会出现误报,所以你应该把它作为指导:“小心点,可能错误“,不是严格的”你必须解决这个问题。“

答案 1 :(得分:3)

Resharper支持团队已接受此错误,可在此处跟踪http://youtrack.jetbrains.com/issue/RSRP-316492