Прежде всего ваш MRE
public class MyClass{
public void myMethod(String let) {
switch (let) {
case "A":
throw new Exception();
break;
default:
break;
}
}
}
не может быть скомпилирован
javac --version
javac 11.0.3
из-за следующих ошибок
javac MyClass.java
MyClass.java:7: error: unreachable statement
break;
^
MyClass.java:6: error: unreported exception Exception; must be caught or declared to be thrown
throw new Exception();
^
2 errors
Если вы 'Посмотрите на домашнюю страницу JaCoCo , вы можете заметить, что 0.8.0 уже почти два года, а последняя версия 0.8.4
И журнал изменений JaCoCo в егообычное местоположение на странице https://www.jacoco.org/jacoco/trunk/doc/changes.html содержит
Релиз 0.8.2 (2018/08/21)
- Часть байт-кода, которую javac генерирует для
switch
оператор для значений java.lang.String
с небольшим числом случаев теперь корректно отфильтровывается при создании отчета (GitHub # 730 ).
, так что для исправленного примера
class Example {
public void myMethod(String let) {
switch (let) {
case "A":
throw new RuntimeException();
default:
break;
}
}
public static void main(String[] args) {
for (String s : new String[]{"A", "B"}) {
try {
new Example().myMethod(s);
} catch (Exception ignore) {
}
}
}
}
JaCoCo 0.8.4 создает следующий ожидаемый отчет
javac Example.java -d classes
java -javaagent:jacoco-0.8.4/lib/jacocoagent.jar -cp classes Example
java -jar jacoco-0.8.4/lib/jacococli.jar report \
jacoco.exec \
--classfiles classes \
--sourcefiles . \
--html report
![report](https://i.stack.imgur.com/Rb5XR.png)
Asэмпирическое правило и цитирование объявлений о выпуске JaCoCo
как всегда, мы рекомендуем использовать последнюю выпущенную версию