SonarCloud показывает покрытие для тестового класса, хотя тестовые классы исключены - PullRequest
0 голосов
/ 18 октября 2019

Я настроил анализ SonarCloud для проекта Java, который запускает анализ при создании PR в репозитории git.

Команда для запуска проверки в моем файле .travis.yml:

mvn clean compile test dependency:copy-dependencies
sonar-scanner 
-Dsonar.projectKey=project-key 
-Dsonar.java.binaries=project/target/classes 
-Dsonar.java.test.binaries=project/target/test-classes 
-Dsonar.java.libraries=project/target/dependency 
-Dsonar.java.test.libraries=project/target/dependency 
-Dsonar.test.exclusions=project/src/test/**/*Test.java

Что ожидается
Если кто-то проверяет код в запросе на извлечение, у которого есть тестовый класс, его не следует рассматривать для покрытия. Только целевой класс должен быть.

Что происходит
Если я регистрирую 2 класса SonarSample.java и SonarSampleTest.java, тогда SonarCloud показывает покрытие для обоих классов.

enter image description here Как я могу исключить тестовый класс из рассмотрения для данных покрытия?

1 Ответ

0 голосов
/ 18 октября 2019

Обратите внимание, что покрытие отображается для файлов, классифицированных как источники , и не отображается для файлов, классифицированных как тесты .

Это выглядит как ошибка:

-Dsonar.test.exclusions=project/src/test/**/*Test.java

Если вы хотите, чтобы файлы *Test.java рассматривались как тесты и тем самым исключали их из источников и, следовательно, из расчетов покрытия, то измените эту строку на включение вместо исключения :

-Dsonar.test.inclusions=project/src/test/**/*Test.java

В качестве отступления: почему вы используете sonar-scanner вместо mvn sonar:sonar?

...