SonarQube не захватывает FileInputStream, который не закрыт - PullRequest
0 голосов
/ 26 сентября 2018
public static String getMD5Checksum(String filePath) throws Exception {
    File file = new File(filePath);
    FileInputStream fis = new FileInputStream(file);
    return DigestUtils.md5Hex(fis);
}

В приведенном выше коде fis не закрывается, но не выдается как ошибка в SonarQube.Метод DigestUtils.md5Hex также не закрывает поток.Оба плагина SonarQube и Sonar Java находятся в последних версиях.

1 Ответ

0 голосов
/ 26 сентября 2018

Вы не используете FileInputStream, но если добавить следующую строку (или аналогичную):

fis.read();

Это добавит действительное правило: Resources should be closed (squid:S2095)

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

Но у вас есть пункт, что нам нужно высвободить ресурс как FileInputStream

Да, вам нужно закрыть входной поток, если вы хотите, чтобы ваши системные ресурсы были возвращены обратно.

Вы можете поднять этот вопрос в Сообществе SonarSource

РЕДАКТИРОВАТЬ

Ресурсы должны быть закрыты, а не предупрежденияновый FileInputStream добавлен как возможная ошибка sonarqube

...