我有:
1. Gradle 1.6
2. SonarQube实例5.0(也有4.1+实例)
3.声纳 - 跑步者(又名SonarQube跑者)版本:2.4
4. Groovy版本:2.3.3 JVM:1.7.0_40供应商:Oracle Corporation操作系统:Linux
我有Java,Java + Groovy或完全基于Groovy的项目的项目。 所有这些项目都有有效的单元和非单元测试(集成,Selenium等)。我还为Java / Groovy(pmd,findbugs,checkstyle,codenarc等)运行各种静态分析工具。
对于基于Java的项目,当我运行sonarRunner(Gradle任务)或声纳 - 跑步者时,我会在项目的Sonar仪表板中看到有效的数据(包括组合代码覆盖率和其他项目健康信息)。所以,一切都适用于基于JAVA的项目。
同样的,不适用于基于Groovy的项目。也就是当我为基于Groovy的项目传递“sonar.language = grvy”并运行声纳分析时,我 NOT 获得单位和IT测试覆盖率,因为它表示0%覆盖率 OR 它甚至没有列出Sonar项目仪表板中的那些,但我成功地获得了项目健康信息(问题,代码行等)。
当我为这个Groovy项目传递上述声纳语言变量“sonar.language = java”时,我 NOT 看到Groovy项目的数据信息(问题,代码行等)和任何单元/集成测试及其组合测试的代码覆盖率信息。我为单元测试和集成测试提供了有效的jacoco exec文件(jacocoage.exe是在jacocoagent连接到目标Tomcat JVM并且停止Tomcat实例之后创建的。)
任何想法!为什么sonar不适用于基于Groovy的项目,也不适用于同时具有Java + Groovy(源Java,Groovy中的测试或反之亦然或混合)的项目。
PS :我试过sonar.language = grvy,java或者sonar.language = java,grvy但是,它没有对项目的声纳仪表板做任何改进。
我拥有的最新SonarQube版本(5.0)支持多语言支持。
Sonar的项目动态图插件也没有显示任何信息,即使代码行显示在右侧(当sonar.languages传递为 grvy )。
当我通过sonar.language = java时,我得到的,这里的Project Motion Chart没有显示任何内容(甚至没有空白图表),说“没有数据”。所有其他项目健康相关信息也消失了(技术债务等领域表示0):
使用最新的SonarQube版本,我看到有新的声纳。*。*字段,我试图找到我是否缺少提供字段或正确值。
好...... 会发生什么事???当我使用 SonarQube实例版本4.1.2 (而不是5.0)
当我使用 sonar.language = java 时 我看到一些信息和单元测试覆盖率为0%,但单元测试成功说100%成功。即使我有有效的jacoco IT exec文件用于Integratiojn测试,它仍然没有显示小部件信息。
当 SonarQube实例是4.1.2 并且如果我设置 sonar.language = grvy 时,我看不到任何单元测试覆盖率或测试状态的IT覆盖率成功%at at所有:
这就是我项目的sonar-project.properties文件中的内容(当我使用声纳 - 跑步器实用程序时)。
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
我在运行sonar-runner时使用不同的值多次使用/调整上述值。
当我在Gradle中运行sonarRunner任务时,我使用了与-D / -P参数相同的值。
注意:SonarQube 5.0无法使用Gradle(1.6)版本(我正在使用),因为我收到有关“无法下载库”等的错误(如果我使用Gradle&gt,则不会出现此错误; 2.2版)。
我注意到的另一点是,即使我使用Groovy编译选项 debug = true 来编译Groovy项目的源代码和测试代码,同时做声纳运行器(同时使用SonarQube实例4.1.2)或者5.0等于) - 或运行 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