Groovy project - Sonar - Публикация проекта и данных покрытия кода Unit + Integration Test
Я имею:
1. Gradle 1.6
2. Экземпляр SonarQube 5.0 (также есть экземпляры 4.1+)
3. Sonar-Runner (он же SonarQube Runner) версия: 2.4
4. Groovy версия: 2.3.3. JVM: 1.7.0_40. Производитель: Oracle Corporation. ОС: Linux.
У меня есть проект с Java, Java + Groovy или полностью основанный на Groovy проект. Все эти проекты имеют действительные модульные и не модульные тесты (интеграция, селен и т. Д.). Я также использую различные инструменты статического анализа для Java/Groovy (pmd, findbugs, checkstyle, codenarc и т. Д.).
Для проекта на основе Java, когда я запускаю sonarRunner (задача Gradle) ИЛИ sonar-runner, я вижу действительные данные в сводной панели Sonar проекта для всего (включая объединенное покрытие кода и другую информацию о работоспособности проекта). Итак, все работает для проекта на основе JAVA.
Но то же самое не работает для Groovy-проекта. то есть, когда я передаю "sonar.language = grvy" для проекта на основе Groovy и запускаю анализ Sonar, я НЕ получаю покрытие для юнитов и ИТ-тестов, так как оно говорит о 0% охвате, ИЛИ даже не перечисляет их в панели управления проекта Sonar, но я успешно получить информацию о состоянии проекта (проблемы, строки кода и т. д.).
Когда я передаю вышеупомянутую переменную языка сонара как "sonar.language=java" для этого проекта Groovy, я НЕ вижу информацию о данных проекта Groovy (проблемы, строки кода и т. Д.) И любую информацию о покрытии кода для тестов модуля / интеграции и их комбинированные тесты. У меня есть действительные файлы jacoco exec для модульных и интеграционных тестов (jacocoIT.exec создается после того, как jacocoagent присоединен к целевой JVM Tomcat и после остановки экземпляра Tomcat).
Есть идеи! почему sonar не работает для проекта на основе Groovy ИЛИ для проекта, который имеет оба языка Java+Groovy (исходный Java, тесты в Groovy или наоборот или смешанные).
PS: я попробовал sonar.language=grvy,java ИЛИ sonar.language=java,grvy НО, это не улучшило панель управления сонара проекта.
Последняя версия SonarQube (5.0), которая у меня есть, поддерживает несколько языков.
Плагин Sonar Project Motion Chart также не отображает никакой информации, даже несмотря на то, что в правой части отображаются строки кода (когда sonar.languages передается как grvy).
Когда я передаю sonar.language = java, то получаю, что здесь Project Motion Chart ничего не показывает (даже пустой график) говорит "Нет данных". Вся остальная информация, связанная со здоровьем проекта, тоже пропала (в полях технического долга и т. Д. Указано 0):
В последней версии SonarQube я вижу, что появились новые поля sonar.*.*, И я пытаюсь выяснить, отсутствует ли у меня поле или его правильное значение.
Хорошо.. что происходит??? когда я использую экземпляр SonarQube версии 4.1.2 (вместо 5.0)
Когда я использую sonar.language = java, я вижу некоторую информацию, и покрытие модульного теста говорит о 0%, но успех модульного теста говорит о 100% успешном. Несмотря на то, что у меня есть действующий файл jacoco IT exec для тестов Integratiojn, он все еще не отображает информацию об этом виджете.
Когда экземпляр SonarQube равен 4.1.2, и если я установил sonar.language = grvy, я НЕ вижу, чтобы какое-либо покрытие модульных тестов или ИТ-покрытие состоянием тестов было успешным,%:
Это то, что у меня есть в файле sonar-project.properties моего проекта (когда я использую утилиту sonar-runner).
sonar.projectName=GradlePlugin
sonar.projectKey=com:company:projectABC:GradlePlugin
sonar.projectVersion=1.0
# optional description
sonar.projectDescription=ContainerSvc Business Service
#sonar.language=grvy,java
sonar.language=java
#Tells SonarQube that the code coverage tool by unit tests is JaCoCo
sonar.java.coveragePlugin=jacoco
#Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
sonar.dynamicAnalysis=reuseReports
#Tells SonarQube where the unit tests execution reports are
sonar.surefire.reportsPath=build/test-results/UT
# Some properties that will be inherited by the modules
#sonar.sources=src/main/groovy,src/main/java,src/test/java,src/test/groovy,src/java-test,src/groovy-test
# Sonar Unit Test Report path
sonar.jacoco.reportPath=build/jacoco/UT/jacocoUT.exec
# Sonar Integration Test Report Path
#sonar.jacoco.itReportPath=build/jacoco/IT/jacocoIT.exec
sonar.jacoco.itReportPath=build/jacoco/UT/jacocoUT.exec
# Sonar Binaries
sonar.binaries=build/classes/main
sonar.java.binaries=build/classes/main
sonar.groovy.binaries=build/classes/main
sonar.sources=src/main/groovy
sonar.tests=src/test/groovy
# Encoding of the source code
sonar.sourceEncoding=UTF-8
sonar.scm.url=scm:svn:http://kobaloki/Core/GradlePlugin/trunk
sonar.junit.reportsPath=build/test-results/UT
sonar.java.coveragePlugin=jacoco
sonar.groovy.coveragePlugin=jacoco
sonar.grvy.coveragePlugin=jacoco
Я использовал / настраивал вышеупомянутые значения много раз с разными значениями во время работы сонара-бегуна.
Я использовал те же значения с параметрами -D / -P при запуске задачи sonarRunner в Gradle.
Примечание: SonarQube 5.0 не будет работать с версией Gradle (1.6) (которую я использую), так как я получаю сообщение об ошибке "Не удалось загрузить библиотеки" и т. Д. (Эта ошибка не возникнет, если я использую версию Gradle > 2.2),
Еще один момент, который я заметил, заключается в том, что, хотя я использую параметр компиляции Groovy debug = true для компиляции исходного кода и кода тестов проекта Groovy, при выполнении sonar-runner (с экземплярами SonarQube 4.1.2 или 5.0 isntances) --or выполняя задачу sonarRunner Gradle (с 4.1.2), я вижу следующие строки в результатах анализа.
15:32:20.647 INFO - Analysing /production/jenkins/AKS/ma/GradlePlugin/build/jacoco/IT/jacocoIT.exec
15:32:21.025 WARN - Coverage information was not collected. Perhaps you forget to include debug information into compiled classes?
а также
15:32:24.681 INFO - Analysing /production/jenkins/AKS/ma/GradlePlugin/build/jacoco/UT/jacocoUT.exec
15:32:24.791 WARN - Coverage information was not collected. Perhaps you forget to include debug information into compiled classes?
15:32:24.792 INFO - Sensor JaCoCoSensor done: 112 ms