ant*_*n91 48 maven jenkins jacoco sonarqube
我正在收听声纳获取jacoco分析报告的问题.然而,詹金斯能够拿起报告并显示结果.我的项目是由詹金斯建造的maven构建.jacoco报告由maven生成(在pom中配置).通过使用Jenkins插件执行声纳.
这就是我在SonarQube上看到的:

这是我在詹金斯看到的项目报告.

maven插件配置:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.4.201312101107</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
Jenkins Sonar插件配置

Col*_*350 64
您缺少一些重要的声纳属性,以下是我的一个构建中的示例:
sonar.jdbc.dialect=mssql
sonar.projectKey=projectname
sonar.projectName=Project Name
sonar.projectVersion=1.0
sonar.sources=src
sonar.language=java
sonar.binaries=build/classes
sonar.tests=junit
sonar.dynamicAnalysis=reuseReports
sonar.junit.reportsPath=build/test-reports
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportPath=build/test-reports/jacoco.exec
Run Code Online (Sandbox Code Playgroud)
Jenkins控制台输出中的错误对于使代码覆盖率起作用非常有用.
由于没有包含类的目录,项目范围设置为0%.
表示您尚未正确设置Sonar.Binaries属性
没有关于每个测试的覆盖率的信息
表示您没有正确设置Sonar.Tests属性
未收集覆盖范围信息.也许您忘记将调试信息包含在已编译的类中?表示sonar.binaries属性设置正确,但这些文件未在调试模式下编译,它们必须是
thS*_*oft 18
基于https://github.com/SonarSource/sonar-examples/blob/master/projects/tycho/pom.xml,以下POM适用于我:
<properties>
<sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.0.201403182114</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
reuseReports设置可防止在读取之前删除JaCoCo报告文件!(自4.3起,这是默认值,不推荐使用.)然后我就跑了
mvn clean install
mvn sonar:sonar
Run Code Online (Sandbox Code Playgroud)
我有类似的问题,0.0%的覆盖率和没有单位测试计数在Sonar仪表板上使用SonarQube 6.7.2:Maven:3.5.2,Java:1.8,Jacoco:使用7.0/7.9/8.0,操作系统:Windows
经过很多努力寻找maven多模块项目的正确解决方案,而不是像单个模块项目这里我们需要说从各个模块中选择jacoco报告并合并到一个报告,所以解决了这个配置的问题,因为我的父pom看起来喜欢:
<properties>
<!--Sonar -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.4.0.905</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很少的其他选项,比如jacoco-aggregate,甚至通过在父pom中包含它来创建一个子模块,但没有真正有效,这很简单.我在日志中看到<sonar.jacoco.reportPath>已弃用,但仍然按原样运行,似乎在执行时自动替换,或者可以手动更新为<sonar.jacoco.reportPaths>或最新.一旦在cmd中用mvn clean install进行设置,然后mvn org.jacoco:jacoco-maven-plugin:prepare-agent install(检查项目的目标文件夹是否创建了jacoco.exec)然后做mvn声纳:声纳,这是我试过的请告诉我是否有其他最好的解决方案.希望这有帮助!! 如果没有,请发布您的问题..
| 归档时间: |
|
| 查看次数: |
121585 次 |
| 最近记录: |