Как определить, какие строки кода участвовали в конкретном выполнении Java-программы?
-
08-07-2019 - |
Вопрос
Предположим, что у меня есть программа Java в среде IDE (в данном случае Eclipse). Предположим теперь, что я выполняю программу и в какой-то момент прекращаю ее или она завершается естественным образом.
Существует ли удобный способ определить, какие строки выполнялись хотя бы один раз, а какие - нет (например, обработка исключений или условия, которые не были достигнуты?)
Ручным способом сбора этой информации было бы постоянно идти в ногу с отладкой и поддерживать набор строк, где мы проходили хотя бы один раз. Однако есть ли какой-нибудь инструмент или профилировщик, который уже это делает?
Изменить: просто для пояснения: мне нужно иметь доступ к этой информации программно, а не обязательно из теста JUnit.
Решение
eclemma будет хорошим началом: инструмент покрытия кода позволит сеансу покрытия записывать информацию вы ищете.
(источник: eclemma.org )
Другие советы
То, о чем вы спрашиваете, называется «охват». Есть несколько инструментов, которые измеряют это, некоторые из которых интегрируются в Eclipse. Я использовал jcoverage , и это работает (я верю в это есть бесплатный пробный период, после которого вам придется его купить). Я не использовал его, но вы также можете попробовать Coverlipse .
Если я правильно понимаю вопрос, вам нужно больше, чем стандартные данные трассировки стека, но вы не хотите вручную обрабатывать свой код, скажем, с помощью отладочных операторов log4j.
Единственное, о чем я могу думать, это добавить какую-то трассировку байт-кода. Обратитесь к инструментированию байт-кода Java . В статье упоминается Cobertura , которую я не использовал, но звучит как то, что вам нужно ...