Я пытаюсь проверить, освобождают ли методы, которые приобретают ресурс. Каков наилучший инструмент для поиска вызывающих методов в классах в одном файле jar? Могу ли я сделать это с помощью CheckStyle
или FindBugs
? Как?Найти вызывающих методов
Я думаю, я могу сделать это, используя BCEL
или подобное, но я никогда раньше не работал с байтовым кодом и занимал слишком много времени, чтобы сделать это.
Поиск «графика вызовов java» не нашел ничего полезного, но это, по-видимому, очень простая функциональность, поэтому я, вероятно, пропустил хороший матч. Тем не менее, я бы не хотел генерировать весь график вызовов в этом очень большом проекте.
Трудно сделать рекомендацию, не зная, какие ресурсы вы пытаетесь провести аудит. В зависимости от «чего» и «как» вы можете взглянуть на инструмент AOP, такой как Javassist, или инструмент анализа потока вызовов, такой как Soot. – Perception
@Перцепция Я встретил Сао в моем поиске, который, я думаю, выполнит эту работу, но для этого потребуется некоторое программирование. Я надеюсь найти что-то, что я могу использовать сразу для * произвольных * ресурсов - скажем, я хочу найти все методы в банке, которые вызывают 'SomeResource.acquire' –
Конечно, FindBugs имеет функции для поиска незакрытых потоков. Я не знаю, насколько обобщена эта поддержка. –