Как определить, какие строки кода участвовали в конкретном выполнении Java-программы?

StackOverflow https://stackoverflow.com/questions/289270

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top