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.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отлаживать = истина для компиляции исходного кода и кода проекта Groovy при выполнении sonar-runner (с экземплярами SonarQube 4.1.2 или 5.0 isntances) - или работает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