Sonar Squid: S2095, когда метод возвращает соединение - PullRequest
0 голосов
/ 07 февраля 2019

Возвращение Connection с использованием метода является обычной практикой, например, в HikariConnectionProvider

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

Но Sonar предупреждает о закрытии соединения

Соединения, потоки, файлы и другие классы, которые реализуют интерфейс Closeable или его суперинтерфейс AutoCloseable, должны быть закрыты после использования.Кроме того, этот вызов close должен быть выполнен в блоке finally, иначе исключение может помешать выполнению вызова.

Я хочу вернуть соединение, которое могу использовать позже, поэтому не могу закрыть егов этих методах

Как / если я могу избежать такого предупреждения в основном методе о возвращении действительного соединения?

EDIT Добавлена ​​ложноположительная ошибка в сообществе сонаров: S2095 отчет о методе возврата Соединение

1 Ответ

0 голосов
/ 07 февраля 2019

Технически говоря, SonarQube (и в данном случае анализатор SonarJava) не гарантирует, что соединение, возвращаемое этим методом, в конечном итоге будет закрыто - отсюда проблема.

Если вы уверены, что ваша кодовая базагде-то еще есть весь необходимый код очистки ресурсов, поэтому я предлагаю пометить эту конкретную проблему как Won't fix в пользовательском интерфейсе SonarQube.

...