2014-05-08 79 views
1

我有這樣的代碼:如何重新編寫冗餘分配?

If SalaryCbx.Checked = True Then 
     fundSalary = "S" <- Throws an error 
    Else 
     fundSalary = "N" <- Throws an error 
    End If 

SonarQube拋出一個 「臨界」 錯誤:

分配不使用 (等級:在代碼冗餘配置) ReSharper的-vbnet RedundantAssignment分配 值不用於在任何執行路徑中

有沒有更好的方法來編寫這種邏輯? 我嘗試了Select Case聲明,但它也拋出了錯誤。

我也使用這個相同的代碼,除了不同的變量/複選框,它工作正常 - 沒有錯誤。

更新:這裏是我使用它的地方。

Dim insertQry As String = "INSERT INTO FUND (FUND_ID, FUND_NM, FUND_TICKER_NM, FUND_SALARY_IND, FUND_BONUS_IND, FUND_ALCTN_IND, BEG_DT, END_DT) " 
    insertQry &= "   VALUES(@FundID, @fndName, @fndTicker, @fndSalary, @fndBonus, @fndAllocation, @fndBeg, @fndEnd) " 

    'Code omitted 

     'Declare Connection String 
     Using sqlConnection As New SqlConnection(myConn) 
      'Declare variable for SQL command 
      Using cmd As New SqlCommand(insertQry) 
       With cmd 
        .Connection = sqlConnection 
        .CommandType = CommandType.Text 
        .Parameters.AddWithValue("@FundID", id) 
        .Parameters.AddWithValue("@fndName", fundName) 
        .Parameters.AddWithValue("@fndTicker", fundTicker) 
        .Parameters.AddWithValue("@fndSalary", fundSalary) 
+0

該消息是說您沒有讀取代碼的任何其他部分中指定的值。如果目前不需要此代碼,則可以將其消除。也有可能你做了類似複製粘貼的錯誤,並且在你打算閱讀這個錯誤時意外地讀了一個不同的變量。 –

+0

感謝評論@AndrewMedico。看我的編輯。 –

+0

檢查並確保它們實際上是相同的變量(例如,您沒有本地遮蔽會員或類似物)。這也可能只是一個誤報。 –

回答

2

該消息是說您沒有讀取代碼的任何其他部分中指定的值。可能的原因:

  • 您犯了一個錯誤(如複製粘貼錯誤),並且意外地讀取了您想要閱讀本文的其他變量。

  • 閱讀代碼已將帶有相同名稱的變量的寫入變量映射到較窄範圍內。

  • 不再需要存在的舊代碼,因爲沒有任何內容需要讀取變量。

  • 檢查器中的誤報。