2016-06-15 4 views
0

Jacoco, как и все другие возможности профилирования в java, о которых я знаю, зависит от java-агентов/инструментов.Якоко обнаруживает неиспользуемые классы

Прибор Java может влиять только на байт-код при загрузке класса.

Интересно, возможно ли как-то обнаружить неиспользуемые классы с помощью Jacoco? Очевидно, что могут быть классы, которые «мертвы» и, в свою очередь, никогда не загружаются ClassLoader.

ответ

1

После запуска тестового запуска JaCoCo сканирует дополнительные классы в пути пути выполнения, которые не были загружены во время выполнения теста, поэтому они также могут быть инструментами и включены в выход.

Я реализовал этот же механизм в своем собственном инструменте покрытия кода (JMockit Coverage), который также полагается на java.lang.instrument. Это единственный способ охватить все соответствующие классы.

0

Я только что проверил тест: я создал файл с именем Delete.java, который никогда не вызывается никаким другим методом. Сгенерированный отчет Jacoco показывает класс Delete с охватом 0%.

+0

Спасибо, @CMPS! Можете ли вы также объяснить, как и почему это происходит? – yuranos87

+0

Когда вы создаете отчет о покрытии, вы указываете путь к классу, и он сообщает обо всех классах на основе файла данных выполнения. Если в JAR есть класс без покрытия, сообщается об этом. Обратите внимание: если вы не укажете полный путь к классу при создании отчета о покрытии, то JaCoCo не знает, что класс не был охвачен. –