SonarQube未捕获没有关闭的FileInputStream。

3
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个回答

2
你没有使用FileInputStream,但如果你添加以下行(或类似的行):
fis.read();

它将添加有效规则:资源应该被关闭(squid:S2095)

连接,流,文件和其他实现Closeable接口或其超级接口AutoCloseable的类,在使用后需要被关闭。

但你说得对,我们需要释放FileInputStream这个资源

是的,如果你想要系统资源被释放回来,你需要关闭输入流。

你可以在SonarSource社区中提出这个问题。

编辑

资源应该被关闭不会警告新的FileInputStream已添加为可能的Sonarqube错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接