2016-11-18 3 views
1

У меня есть простой проект, который должен выполнить тест JUnit и позволить SonarQube сканировать/запустить тест результата JUnit с помощью SonarScanner. пока я поставил свой проект на Github hereSonarQube Jacoco JUnit: SonarScanner получить много неожиданных проблем

Есть некоторые проблемы:

  1. WARN: Класс "XXX" не доступен через гидролокатор загрузчика классов (Reference)
  2. Нет jacoco-it.exec и jacoco-ет .exec, только запустить jacoco.exec на SonarScanner
  3. Невозможно исключить некоторые файлы при запуске теста JUnit, потому что я только хочу, чтобы запустить тест в моей службе папки (Reference)

Это мой sonar-project.properties:

# Required metadata 
sonar.projectKey=com.example:Sample 
sonar.projectName=Java :: Example :: SonarQube Scanner 
sonar.projectVersion=1.0 

# Comma-separated paths to directories with sources (required) 
sonar.sources=src 
sonar.exclusions=src/main/resources/** 
#sonar.test.inclusions=src/main/java/com/example/service/**, src/test/java/** 
#sonar.test.exclusions=src/main/java/com/example/controller/** 

# Encoding of the source files 
sonar.sourceEncoding=UTF-8 

#Jacoco 
sonar.junit.reportsPath=target/surefire-reports 
sonar.jacoco.reportPath =target/jacoco.exec 
sonar.jacoco.reportMissing.force.zero=true 
sonar.java.binaries=target/classes/** 
#sonar.java.libraries=libs/** 

Когда я Run Maven Test до успеха сборки, это не создавать какие-то файлы и папки в папку Target.

enter image description here

После этого я бегу мой SonarScanner, чтобы сканировать мой проект, но у меня эти проблемы.

Мой вопрос:

  1. Как я могу запустить мой SonarQube сканер без каких-либо WARN?
  2. Как правильно удалять файлы при сканировании результата JUnit? Поскольку я использую эталонные настройки, а Coverage все еще сканирует файлы
  3. Как создать jacoco-it.exec и jacoco-ut.exec и запустить его на SonarScanner?

Мой проект основан на этом Reference

+0

Вам не нужно «sonar-project.properties», если вы используете Maven: см. Документацию об анализе с помощью Scanner for Maven - http://docs.sonarqube.org/display/SCAN/Analyzing+with+ SonarQube + Scanner + для использования Maven должен быть достаточным, чтобы избежать многих головных болей конфигурации, например такие как предупреждение «Класс» XXX «недоступно». 'jacoco-ut.exec' и' jacoco-it.exec' являются продуктами исполнения 'jacoco-maven-plugin' для модульных тестов и тестов интеграции соответственно. – Godin

+0

Я использую sonarqube и sonarscanner в качестве третьей стороны. Вот почему у меня есть sonar-project.properties. Я загружаю RAR SonarQube и SonarScanner, а затем сначала, я запускаю свой SonarQube, а затем я иду в CMD, переходя в мою папку (sampleProject), а затем запускаю свой сканер. Настройка моего SonarScanner, наложенная на sonar-project.properties –

+0

Вопрос: «Как я могу запустить свой SonarQube Scanner без WARN?» A: Используйте SonarQube Scanner для Maven. – Godin

ответ

2

Использование SonarQube Scanner for Maven вместо просто SonarQube Scanner.В противном случае вы попадаете в неприятности с конфигурацией, в которую вы попали, потому что нужно все делать вручную:

  • sonar.sources, скорее всего, является неправильным - должно быть src/main/java и будет правильно настроен сканер для Maven, и вот почему вы» повторное получение нежелательных тестовых файлов проанализированных в качестве основных файлов
  • , а также sonar.tests, что обычно для Maven проектов на основе очков src/test/java
  • sonar.java.libraries пуст, и именно поэтому вы получаете Class "XXX" is not accessible through the classloader sonar - это может быть довольно трудно перечислить все необходимые JAR файлы зависимостей вашего проекта Maven ЭСТ, в то время как снова сканер для Maven будет делать это автоматически, и самое главное будет делать это правильно
  • sonar.projectKey с помощью сканера для Maven будет автоматически установлен Maven GroupID: артефакта
  • sonar.projectName и sonar.version с помощью сканера для Maven будет правильно установлен Maven названия проекта и версия, соответственно, так что вам не нужно менять версию, когда она будет меняться в проекте Maven
  • других, такие, как sonar.sourceEncoding, также будут установлены автоматически
sonar.java.binaries, sonar.java.test.binaries и sonar.java.test.libraries с помощью сканера для Maven

При необходимости вы все еще будете в состоянии предоставить другие дополнительные свойства

  • с помощью командной строки, такие как mvn ... sonar:sonar -Dsonar.something=something
  • или SonarQube UI
  • или указать их непосредственно в properties разделе pom.xml

Как создать jacoco-it.exec и jacoco-ut.exec и запустить его на SonarScanner?

Обычно jacoco-ut.exec относится к данным о покрытии модульных тестов и jacoco-it.exec относится к данным о покрытии интеграционных тестов. Они создаются по jacoco-maven-plugin, в вашем pom.xml настроены jacoco-maven-plugin для создания jacoco.exec.

+0

Эй, спасибо за ответ и объяснение. Плохо с помощью SonarScanner. Как я могу запустить тест единицы измерения только в моей конкретной папке? Например, в моем проекте Github, я только хочу, чтобы покрытие Jacoco на файлах Службы. Поэтому мне нужно исключить другие файлы, кроме Службы. Но когда я запускаю mvn sonar: sonar, он все еще просматривает все файлы в моем проекте. –

Смежные вопросы