2017-02-14 2 views
3

У моей команды довольно много кода. Недавно я нашел некоторые объекты, которые не были закрыты должным образом.
Как я могу найти все экземпляры, которые не закрыты или нет внутри блока try-with-resources?
Некоторые объекты, такие как Statement, ResultSet, не отображают для него предупреждающие сообщения.Как я могу найти все экземпляры и объекты моего кода, которые не закрыты?

Есть ли инструмент расширения для отображения всех этих случаев?
Я использую Eclipse.

+0

AFAIK попробуйте с ресурсами обещает закрыть ресурсы, поэтому этого не должно происходить. Но как насчет старинной школы 'try'-'catch', у вас есть какие-то из них? –

+0

@Tim TWR гарантирует только закрытие «названных» ресурсов. Например, 'try (BufferedReader r = new BufferedReader (новый InputStreamReader (новый FileInputStream (" ... "))) {}', гарантируется, что будет закрыто только «BufferedReader». FIS и ISR могут не быть, если построение БЛ не выполняется. –

+0

Итак, у любого ресурсного блока может возникнуть проблема, если я правильно вас понял. –

ответ

2

Инструменты анализа статического кода, такие как Sonar, должны найти все эти случаи и предупредить вас о них.
IDEA IntelliJ's inspection profiles также содержит некоторые правила для этого (Настройки> Редактор> Инспекции> Java> Проблемы с управлением ресурсами или просто фильтровать по «закрытию» внутри Инспекций).

Я вижу, что вы используете Eclipse. Вероятно, вы можете установить the FindBugs Eclipse plugin, который включает пару правил, чтобы проверить, правильно ли закрыты ресурсы.

Смежные вопросы