声纳鱿鱼:方法返回连接时S2095

时间:2019-02-07 07:57:03

标签: java sonarqube database-connection sonarlint

使用一种方法返回Connection是一种常见的做法, 例如,在光(Hikari)的HikariConnectionProvider

public Connection getConnection() throws SQLException
   {
      Connection conn = null;
      if (this.hds != null) {
         conn = this.hds.getConnection();
      }   
      return conn;
   }

但是Sonar警告关闭连接

  

实现Closeable接口或其超级接口AutoCloseable的连接,流,文件和其他类在使用后需要关闭。此外,必须在finally块中进行关闭调用,否则异常可能会阻止调用。

我想返回一个以后可以使用的连接,所以我不能在那些方法中关闭它

如何/是否可以避免在主要方法上发出此类警告以返回有效连接?

编辑 在Sonar社区中添加了一个误报性错误:S2095 report on method return Connection

2 个答案:

答案 0 :(得分:1)

我在与mongodb建立连接时遇到了类似的问题。因此,当我使用spring时,我刚刚创建了连接对象Autowired

通过这种方式,连接对象的生命周期由spring管理,我们不必显式关闭连接。

答案 1 :(得分:0)

从技术上讲,SonarQube(在本例中为SonarJava分析器)不能保证最终关闭此方法返回的连接-因此出现了问题。

如果您确信自己的代码库在其他地方有所有必需的资源清理代码,那么我的建议是在SonarQube UI中将此特定问题标记为Won't fix