2013-02-21 123 views
2

在我的Dao類中,爲了關閉db資源,我編寫了一個小函數,它接受ResultSet,Connection和Statement對象並關閉它。關閉Sonar中的資源違規

我從最後的每塊數據庫訪問方法塊中調用此函數。但聲納顯示這些違規行爲,如:

Ensure that resources like this Statement object are closed after use 

有什麼辦法讓Sonar知道這些處理?

使用的配置文件是「聲納道路」

+0

上的規則這是[sonar](https://dev.eclipse.org/sonar/rules/show/pmd:CloseResource?layout=false)規則。將此與您所做的相比較。 – SudoRahul 2013-02-21 10:24:18

回答

5

此規則由PMD帶入聲納,這是很基本的:它只是檢查是否有一個「myResource.close()」中的最後塊調用。句號。如果您廣泛使用「小功能」,那麼您應該考慮取消激活此規則,因爲它會產生太多的誤報。

您也可以嘗試激活可能更智能的Findbugs規則。請參閱our Sonar demo instance - Nemo.

+0

我認爲我會接受誤報而不是關閉它。 – rajesh 2013-02-21 11:46:46

+0

您也可以添加// NOPMD註釋(http://pmd.sourceforge.net/pmd-5.0.4/suppressing.html) – Siggen 2013-05-28 05:40:15

+0

請注意,它會純粹基於類的名稱進行這些類型的檢查。如果您擁有自己的ResultSet(甚至可能沒有close方法!),則會觸發警告。 – 2017-02-17 16:09:08