У меня есть все эти инструменты, которые сообщают о том же покрытии с JaCoCo: покрытие линий 69% и покрытие филиалов 23%.
Примечание. Снимки экрана были сделаны в течение нескольких дней, поэтому они имеют немного разные значения, но разница составляет & lt; 1%
Однако сонар сообщает разные значения:
Проект Maven имеет следующую структуру:
- основной (агрегатор)
- модуль Java
- модуль js (узел)
Вы можете увидеть такое же покрытие, указанное для основного и java-модулей, и отсутствие покрытия для js-модуля.
Я использую последние версии jacoco
, jacoco-maven-plugin
и сонара Java Plugin
.
Вот соответствующие фрагменты журнала сборки из mvn sonar:sonar
- вроде все в порядке:
$ egrep -i 'jacoco|\[warn]' consoleText
[WARN] [04:34:29.569] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[WARN] [04:34:29.576] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[WARN] [04:34:29.593] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[INFO] [04:34:32.704] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco-it.exec
[WARN] [04:34:32.952] Bytecode of dependencies was not provided for analysis of test files, you might end up with less precise results. Bytecode can be provided using sonar.java.test.libraries property
[WARN] [04:34:50.101] Cobertura report not found at /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/site/cobertura/coverage.xml
[INFO] [04:35:03.391] Sensor JaCoCoSensor
[INFO] [04:35:03.406] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco.exec
[INFO] [04:35:03.712] Sensor JaCoCoSensor (done) | time=321ms
[INFO] [04:35:03.712] Sensor JaCoCoOverallSensor
[INFO] [04:35:03.714] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco.exec
[INFO] [04:35:03.762] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/sonar/jacoco-overall.exec
[INFO] [04:35:03.906] Sensor JaCoCoOverallSensor (done) | time=194ms
[INFO] [04:35:11.013] JaCoCoSensor: JaCoCo report not found : /home/acme/workspace/example-Sonar-DSL/modules/frontend/target/jacoco.exec
[INFO] [04:35:11.013] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/modules/frontend/target/jacoco-it.exec
[INFO] [04:35:11.179] JaCoCoSensor: JaCoCo report not found : /home/acme/workspace/example-Sonar-DSL/target/jacoco.exec
[INFO] [04:35:11.179] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/target/jacoco-it.exec
Это ошибка в подключаемом модуле Java Sonar? Я думаю, что маловероятно, что метрика, сообщаемая сонаром, верна, когда 3 других инструмента, настроенных разными людьми, постоянно показывают разные значения.
2 ответа
Похоже, показатель охвата исправился. Теперь он сообщает правильные значения - кстати, в тот же день мы обновили JDK до последней версии патча (8u92).
Это говорит о том, что датчик JaCoCo работает неправильно в зависимости от JRE, но требует дополнительных исследований.
Вот как вычисляется показатель «Покрытие модульных тестов»:
- NUMBER_OF_LINES = количество строк + количество условий.
- COVERED_LINES = NUMBER_OF_LINES - (количество непокрытых строк + количество непокрытых условий.
ПОКРЫТИЕ = (100 * COVERED_LINES) / NUMBER_OF_LINES.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.