SonarQube:开箱即用的SonarQube规则与ResultSet和PreparedStatement不同

时间:2017-11-14 20:53:09

标签: java sonarqube

我有以下代码

Result rs = null;
PreparedStatement ps = null;

try{
   rs = <some result set>
   ps = <some preparedStatement>
   //using rs and ps before end of try block
} catch {
     //log exceptions             
} finally {
    try{
       if(rs != null) rs.close(); // (1) SonarCube detects this close() and doesn't raise any issues.
    } catch {
       //ignore
    } finally {
       rs = null;
    }

    try{
       if(ps != null) ps.close(); //(2) This close() is NOT detected by SonarCube and it complains.
    } catch {
       //ignore
    } finally {
       ps = null;
    }
}

所以我的问题是与ResultSet相比,PreparedStatement有什么不同。两者都在实现AutoCloseable接口。两者都以相同的模式关闭。

请不要建议尝试使用资源作为解决方案。我的代码中有很多地方会发生这种情况,因此更改所有这些地方是不切实际的。

谢谢。

0 个答案:

没有答案