2 回答

TA貢獻1834條經(jīng)驗 獲得超8個贊
如果指定的鍵尚未與值關(guān)聯(lián)(或映射到 null),則將其與給定值關(guān)聯(lián)并返回 null,否則返回當(dāng)前值。
如果不需要,您可以放心地忽略返回的值。Sonarqube
對于某些規(guī)則非常具有侵入性,因此只需禁用它并繼續(xù)您的業(yè)務(wù)。
恕我直言,該特定規(guī)則主要是針對由多個開發(fā)人員編寫代碼的項目中的常見模式設(shè)置的。

TA貢獻1995條經(jīng)驗 獲得超2個贊
除了@LppEdd 的正確分析器之外,這個問題也在sonarqube 論壇上得到了回答:
基本上,這條規(guī)則取自 FindBugs 的規(guī)則RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED
putIfAbsent 方法通常用于確保單個值與給定鍵相關(guān)聯(lián)(如果不存在則放置成功的第一個值)。如果忽略返回值并保留對傳入值的引用,則可能會保留與映射中的鍵不相關(guān)的值。如果您使用哪一個很重要,而您使用了未存儲在地圖中的那個,那么您的程序?qū)⑦\行不正確。
在這種情況下,我不保留對存儲值的引用,這確實是誤報。
將來,此特定規(guī)則可能會在 SonarQube 中作為單獨的規(guī)則實施,而不再作為當(dāng)前規(guī)則 (RSPEC-2201) 的一部分。
添加回答
舉報