Sonarqube bug,"Change this condition so that it does not always evaluate to 'false'; some subseque


IAlarmDevice alarmDevice = null;
if(alarmFlag == 
AlarmFlags.Acknowledge
{
alarmDevice = new 
Acknowledged Armed Ice("Alarm1", 
alarm.AcknowledgeCycle);
}
else{
alarmDevice = new 
ResetAlarmDevice("Alarm1", 
alarm.ResetCycle);
}
if(alarmDevice == null)
{
throw new ArgumentException("Could 
not create an Alarm device");
}

在上面的代码中,alarmDevice将被分配到";否则";如果不是;如果";块如果即使在赋值之后alarmDevice的值为null(比如说找不到具有在构造函数中传递的名称的警报(;如果(alarmDevice==null(";我不明白为什么Sonarqube说它总是评估为false?如果在构造函数中没有传递警报名称字符串的alarmDevice,则它可能评估为true,在这种情况下,alarmDevice将保持为null。我在这里错过了什么?这是声纳的假阳性吗?

如果你去除了所有的噪音,这就是你的代码:

if(...)
{
alarmDevice = new ...
}
else
{
alarmDevice = new ...
}

在C#中,alarmDevice不可能为null。构造函数不能在C#中返回null,因此不可能不为变量分配实例。

相关内容

  • 没有找到相关文章

最新更新