Отчет jacoco с некоторыми файлами, строки которых не выделены
Проверяя мой отчет по jacoco, я заметил, что в некоторых файлах строки не выделены. У него выделено имя метода, но нет каких-либо операторов в методе. В то же время в других файлах все строки выделены красным или зеленым, что я и ожидал. Так почему же некоторые файлы в одном отчете не выделены? Я прочитал FAQ, но, кажется, если я что-то напутал при генерации отчета, ни одна из строк не будет выделена? Когда я попытался сгенерировать отчет с неверными файлами классов, все строки были выделены красным. Так что же мне не хватает, из-за чего некоторые строки не выделяются?
Я использую Maven и делаю покрытие кода на Java-проекте. Спасибо
1 ответ
Давайте посмотрим на байт-код класса:
javap -v UserListsComponentProvider
это показывает
public void getUserShoppingListByListId(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, javax.ws.rs.container.AsyncResponse) throws com.coupons.web.api.base.BusinessException;
...
LineNumberTable:
line 50: 76
Exceptions:
throws com.coupons.web.api.base.BusinessException
Таким образом, информация в байт-коде о строках содержит только одну строку для метода getUserShoppingListByListId
а JaCoCo показывает именно то, что видит.
Я предполагаю, что это происходит, потому что вы инструментируете и анализируете классы, которые сотканы AspectJ вместо инструментария и анализа оригинальных классов. См. https://github.com/jacoco/jacoco/issues/476 котором обсуждается аналогичная проблема и приводится пример использования JaCoCo с AspectJ-компиляцией во время компиляции.