更改此条件,使其不总是得出“假”

时间:2019-05-31 07:46:28

标签: c# sonarqube null-coalescing-operator

在SonarQube的分析过程中,我们看到了许多此警告的示例

  

更改此条件,以使其始终不等于“ false”;   某些后续代码将永远不会执行。

一个发生这种情况的例子是-对于给定的代码...


    if (components?.ContainsKey(machineType) ?? false)
    {
        return components[machineType];
    }

    throw new ArgumentException($"There is no available configuration for {machineType}!");

...我们得到...

enter image description here

我们正在使用C#空合并来简化空检查,以便提供components(这是一个字典)不是null,而components 包含machineType指定的键,然后我们在components字典中返回machineType键的值。

否则,如果components为null,,或者如果词典包含键,则表达式的值为false,而我们不这样做不会进入代码块并返回值,但是我们抛出异常。

请有人可以解释为什么SonarQube对此有所抱怨。如果我们将其重写为使用“老式”的空检查和&& ing的冗长样式,那么SonarQube就是一个快乐的兔子。

SonarQube是否仅不了解??运算符?

还是我们只是在这样的语句中滥用?.??运算符?

0 个答案:

没有答案