【发布时间】:2019-03-31 05:41:24
【问题描述】:
Sonarqube 一直在用这个问题标记代码,在我看来,这是一个误报。 代码如下所示:
try(PreparedStatement st=con.prepareStatement(myQuery)){
st.setInt(1, myValue);
...
ResultSet rs = st.executeQuery();
...
}
如果我没记错的话,PreparedStatement 实现了 Closeable,并且在关闭自身时,它也会关闭底层的 ResultSet。
这种行为会阻止 ResultSet 保持打开状态,但 Sonarqube 分析会将其标记为严重错误。
我错了吗? 在这种情况下有什么方法可以让 Sonarqube 忽略此规则?
在 Sonarqube 6.7.3 和 JDK 8 下测试。
来自ResultSetjavadoc:
当生成它的 Statement 对象关闭、重新执行或用于从多个结果序列中检索下一个结果时,ResultSet 对象会自动关闭。
【问题讨论】:
-
提供您的声纳配置属性(
sonar-project.properties文件或 pom 中的属性,如果您使用的是 maven-plugin)可能在那个地方可能有问题。 -
pom.xml 文件中没有属性文件或任何配置
标签: java sonarqube false-positive