说明
在SonarQube的官网中,发现6.0以后的版本不再支持cobertura。所以决定尝试使用JaCoCo来进行单元测试,统计单元测试覆盖率。下载最新的版本,如下:
软件名称 |
版本 |
Jenkins |
Ver.2.60.1 |
SonarQube |
6.4 |
Sonar-Scanner |
2.8 |
Maven |
3.3 |
具体安装就不多说了。
项目POM配置
org.apache.maven.plugins
maven-compiler-plugin
1.5
sonar-coverage
true
org.jacoco
jacoco-maven-plugin
0.7.9
org.jacoco
jacoco-maven-plugin
true
agent-for-ut
prepare-agent
agent-for-it
prepare-agent-integration
jacoco-site
verify
report
如果不想在项目中添加,在jenkins中配置maven时,添加如下语句,效果一样
clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true package
Jenkins配置
在maven配置后添加SonarQube Scanner的配置,分析配置如下:
sonar.projectKey=sonar:multipartTest
sonar.projectName=multipartTest
sonar.projectVersion=1.0
sonar.modules=multipart-base,multipart-core
multipart-core.sonar.projectName=multipart-core
multipart-base.sonar.projectName=multipart-base
sonar.sources=src/main/java
sonar.tests=src/test/java
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=target/classes
sonar.java.coveragePlugin=jacoco
sonar.coverage.exclusions=**/entity/**
其中,项目有多个模块时使用sonar.mudules,如果为普通项目可以删除该部分配置:
sonar.modules=multipart-base,multipart-core
multipart-core.sonar.projectName=multipart-core
multipart-base.sonar.projectName=multipart-base
需要注意以下几个的配置:
sonar.java.binaries 如果该配置路径错误,则项目的单元测试覆盖率为0。之前使用过sonar.binaries配置,结果无效,仍没有单元测试覆盖率。
sonar.coverage.exclusions 排除单元测试的文件路径,配置规则见SonarQube平台中配置-->排除下的说明,如下: