我有以下代码声明,
[(id)self.locationManager headingAvailable]
Sonar( sonarqube 5.6.4 )在上面代码的 FileSystems.getDefault()部分引发了一个阻止程序问题,说明了这一点,
资源应该关闭 - Java的垃圾收集不可能 依靠清理一切。特别是,连接,流, 文件和其他实现Closeable接口的类或它的类 超级接口,AutoCloseable,必须在之后手动关闭 创建。如果不这样做,将导致资源泄漏 首先提出应用程序,然后可能是他们的框 膝盖。
然后,我检查了 FileSystem 的javadoc,其中说明了
无法关闭默认提供程序创建的文件系统。
参考 - > https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html
现在我的问题是如何解决这个声纳问题,而不是忽略它。 如果有人解决了这个问题,请帮忙。
答案 0 :(得分:0)
如果您确定自己的情况,最简单的方法就是告诉Sonar,您在这里所拥有的是误报并且不应该被标记。 您也可以使用try with resources构造,使Sonar认为资源正在被关闭,而事实上并非如此(如果Java正确处理它,它不应该尝试在使用此资源时尝试关闭它情况)。