2013-02-21 173 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