近期因工作需要,需對代碼覆蓋率進行統計,所以這篇就當做對這段時間學習的總結。
JaCoCo Java Code Coverage Library
Jacoco 是一個開源的覆蓋率工具。Jacoco 可以嵌入到 Ant 、Maven 中,並提供了 EclEmma Eclipse 插件,也可以使用 Java Agent 技術監控 Java 程序。很多第三方的工具提供了對 Jacoco 的集成,如:Sonar、Jenkins、IDEA.
1、首先在pom文件加入maven插件
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<configuration>
<!--指定生成 .exec 文件的存放位置-->
<destFile>target/coverage-reports/jacoco-unit.exec</destFile>
<!--Jacoco 是根據 .exec 文件生成最終的報告,所以需指定 .exec 的存放路徑-->
<dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
2、在當前項目的根目錄下執行mvn test
3、maven會運行所有的測試,並生成exec文件到指定的目錄中(生成的文件位置在pom文件中配置好了)
4、我這裏已經安裝好了sonarScanner已經我的sonarServer已經部署到雲端了,所有,這裏我就直接給Sonar集成jacoco。在項目根目錄下新建sonar-project.properties,內容如下
#項目的key
sonar.projectKey=test
#項目的名字(可以隨便寫,這個名字在sonar顯示的)
sonar.projectName=test-lsl
#項目的版本
sonar.projectVersion=2.0
#需要分析的源碼的目錄
sonar.sources=src/
#指定class文件所在的目錄(如果沒編譯可以不寫)
sonar.java.binaries=target/classes
#java語言
sonar.language=java
# 下面的這兩個參數作用是相同的,因爲有時我們需要指定某個文件夾或者忽略某個文件夾
# sonar.inclusions=src1/**,src3/**
sonar.exclusions=src/main/resources/public/**
# 源碼編碼,默認是系統編碼
sonar.sourceEncoding=UTF-8
# Set jacoco Configuration
# 指定代碼覆蓋率工具
sonar.core.codeCoveragePlugin=jacoco
# 指定exec二進制文件存放路徑
sonar.jacoco.reportPaths=target/coverage-reports/jacoco-unit.exec
# 以下屬性可選擇性加,當然也可以不加
sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportMissing.force.zero=false
5、在項目根目錄下執行sonar-scanner
-----------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 5:21.566s
INFO: Final Memory: 24M/880M
INFO: ------------------------------------------------------------------------
E:\worksoft\idea\jdy_v3.1\jindouyun>sonar-scanner
6、執行完畢,連接sonar-scanner看結果