SonarQube показывает ошибку, даже если реализованы предложения

Выполнив анализ кода нижеприведенного кода в SonarQube, я обнаружил, что предлагаю закрыть HttpClient.

import org.apache.http.impl.client.CloseableHttpClient;

public void request() {
    CloseableHttpClient httpclient = null;

    try {
        httpclient = HttpClients.createDefault();

        /**
         * Rest of the code
         */
    } catch(IOException e) {
        LOGGER.error("Error in processing : {}", e.getMessage(), e);
    } finally {
        try {
            if(httpclient != null) {
                httpclient.close();
            }
        } catch(IOException e) {
            LOGGER.error("Error in closing client : {}", e.getMessage(), e);
        }
    }
}

SonarQube до сих пор жалуется, что httpclient должен быть закрыт, хотя я закрываю его в finally блок.

Ошибка от SonarQube:

Close this "CloseableHttpClient".

Java - 1.8 SonarQube - 5.6

Любые идеи, что я могу делать неправильно. Спасибо

1 ответ

Используйте попытку с ресурсами

public void request() {
   try (CloseableHttpClient httpclient = HttpClients.createDefault()){
    /**
     * Rest of the code
     */
   } catch(IOException e) {
       LOGGER.error("Error in processing : {}", e.getMessage(), e);
   } 
}
Другие вопросы по тегам