說明
在SonarQube的官網中,發現6.0之後的版本再也不支持cobertura。因此決定嘗試使用JaCoCo來進行單元測試,統計單元測試覆蓋率。下載最新的版本,以下:java
軟件名稱apache |
版本app |
Jenkinsmaven |
Ver.2.60.1單元測試 |
SonarQube測試 |
6.4ui |
Sonar-Scannerspa |
2.8code |
Mavenxml |
3.3 |
具體安裝就很少說了。
項目POM配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>sonar-coverage</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.9</version> <configuration> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <configuration> <append>true</append> </configuration> <executions> <execution> <id>agent-for-ut</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>agent-for-it</id> <goals> <goal>prepare-agent-integration</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
若是不想在項目中添加,在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平臺中配置-->排除下的說明,以下: