Как определить, какие строки кода участвовали в конкретном выполнении Java-программы? - PullRequest
5 голосов
/ 14 ноября 2008

Предположим, что у меня есть программа Java в IDE (в данном случае Eclipse). Предположим теперь, что я выполняю программу и в какой-то момент прекращаю ее или она заканчивается естественным образом.

Есть ли удобный способ определить, какие строки выполнялись хотя бы один раз, а какие - нет (например, обработка исключений или условия, которые не были достигнуты?)

Ручным способом сбора этой информации было бы постоянно идти в ногу с отладкой и поддерживать набор строк, где мы проходили хотя бы один раз. Однако есть ли какой-нибудь инструмент или профилировщик, который уже это делает?

Редактировать: просто для пояснения: мне нужно иметь доступ к этой информации программно, а не обязательно из теста JUnit.

Ответы [ 3 ]

8 голосов
/ 14 ноября 2008

eclemma будет хорошим началом: инструмент покрытия кода позволит сеансу покрытия записывать информацию, которую вы ищете.

alt text
(источник: eclemma.org )

3 голосов
/ 14 ноября 2008

То, о чем вы спрашиваете, называется «охват». Есть несколько инструментов, которые измеряют это, некоторые из которых интегрируются в Eclipse. Я использовал jcoverage , и он работает (я считаю, что у него есть бесплатный пробный период, после которого вам придется его купить). Я не использовал его, но вы также можете попробовать Coverlipse .

2 голосов
/ 14 ноября 2008

Если я правильно понимаю вопрос, вы хотите больше, чем стандартные данные трассировки стека, но не хотите вручную обрабатывать свой код, скажем, с помощью отладочных операторов log4j.

Единственное, о чем я могу думать, это добавить какую-то трассировку байт-кода. См. Инструментирование байт-кода Java . В статье упоминается Cobertura , которую я не использовал, но звучит как то, что вам нужно ...

...