Java 如何在代码中找到所有未关闭的实例和对象?
我的团队有大量的代码。最近我发现了一些未正确关闭的对象。Java 如何在代码中找到所有未关闭的实例和对象?,java,try-with-resources,autocloseable,Java,Try With Resources,Autocloseable,我的团队有大量的代码。最近我发现了一些未正确关闭的对象。 如何查找未关闭或不在try with resources块中的所有实例? 一些对象,例如语句,结果集,甚至没有显示它的警告消息 有显示所有这些事件的扩展工具吗? 我正在使用Eclipse。静态代码分析工具(如)应该找到所有这些事件并向您发出警告。 还包括一些相关规则(设置>编辑器>检查>Java>资源管理问题,或者只是在检查中按“关闭”进行过滤) 我看到您正在使用Eclipse。您可能可以安装,其中包括一些检查资源是否正确关闭的规则。AF
如何查找未关闭或不在
try with resources
块中的所有实例?一些对象,例如
语句
,结果集
,甚至没有显示它的警告消息
有显示所有这些事件的扩展工具吗?我正在使用Eclipse。静态代码分析工具(如)应该找到所有这些事件并向您发出警告。
还包括一些相关规则(设置>编辑器>检查>Java>资源管理问题,或者只是在检查中按“关闭”进行过滤)
我看到您正在使用Eclipse。您可能可以安装,其中包括一些检查资源是否正确关闭的规则。AFAIK try with resources承诺关闭资源,因此不应该发生这种情况。但是,对于老式的
try
-catch
块,您也有这些块吗?@Tim TWR只保证关闭“命名”资源。例如,try(BufferedReader r=new BufferedReader(new InputStreamReader(new FileInputStream(“…”)){}
,只有BufferedReader
保证关闭。如果BR构建失败,则FIS和ISR可能不会关闭。因此,如果我理解正确,则任何资源块都可能出现问题。IDEA中可能存在的重复。作为可能的解决方案之一:显示可关闭的
接口的层次结构(默认-ctrl+H)并从项目的层次结构中查找每个类的用法(alt+F7)