簡體   English   中英

Sonarqube 錯誤,“更改此條件,使其不會總是評估為‘假’;某些后續代碼永遠不會執行”。 這里有什么問題?:

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM