[英]SonarQube complaining to Change this condition so that it does not always evaluate to “true”
[英]Sonarqube bug, "Change this condition so that it does not always evaluate to 'false'; some subsequent code is never executed". Whats wrong here?:
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");
}
在上面的代碼中,如果不是“if”塊,alarmDevice 將在“else”塊中分配。 即使在分配之后,alarmDevice 的值為 null(比如無法找到構造函數中傳遞的名稱的警報),null 檢查“if(alarmDevice == null)”將處理它。 我不明白為什么 Sonarqube 說它總是評估為假? 如果沒有具有警報名稱字符串的警報設備在構造函數中傳遞,則它可能評估為真,在這種情況下,警報設備將保持 null。 我在這里想念什么? 是否有任何機會聲納誤報?
如果您消除所有噪音,這就是您的代碼歸結為:
if(...)
{
alarmDevice = new ...
}
else
{
alarmDevice = new ...
}
在 C# 中, alarmDevice
不可能是 null。 構造函數不能在 C# 中返回null
,因此不可能沒有將實例分配給您的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.