jacoco,檢查代碼覆蓋率


目的:檢查代碼覆蓋率,包括對語句的覆蓋,對分支或者條件的覆蓋等等

實現原理:1、服務器上采集收據

                  2、采集數據和本地源碼做匹配

                  3、瀏覽器展示匹配結果

使用工具:Sonar5.4:覆蓋結果展示;

                 Jacoco7:用於在服務器端產生覆蓋數據;

                 命令行方式處理匹配結果;

                 JDK1.8

                 SonarQube Scanner 3.2;

一、服務器環境搭建

1、下載Jacoco並解壓上傳至服務器(linux)

http://www.eclemma.org/jacoco/index.html

2、在gsxdb.properties文件中加入:指定javaangent的安裝位置,指定結果文件jacoco.exec(運行后生成此文件)的位置。

 

 -javaagent:XX/lib/jacocoagent.jar=destfile=XX/jacoco.exec

3、檢驗是否部署成功:

例gs項目:ps -ef | grep Main_Gs

刷新安裝目錄,查看是否生成了jacoco.exe文件,如果有此文件,則部署成功。

 

  

4、做功能測試時,需要關閉進程獲取結果文件jacoco.exec. 

二、本地環境搭建

1、下載SonarQube並解壓到本地。

http://www.sonarqube.org/downloads/ 

2、開啟SonarQube:進入本地操作系統對應的目錄,如本地操作系統為windows64位,則進入D:\aotu\sonarqube-5.4\bin\windows-x86-64,雙擊StartSonar.bat啟動SonarQube。

3.驗證SonarQube是否正常運作:瀏覽器訪問http://localhost:9000/ ,然后登陸,用戶名:admin,密碼:admin。 

4、進入對應的源碼項目,

1)將服務器下載的jacoco.exec,放入目錄中

2)新增配置文件:sonar-project.properties,設置項目的參數,供Sonar讀取,以及Class文件的地址和結果文件的地址,供Sonar-Scanner讀取。

 

 

 

腳本代碼參考

# must be unique in a given SonarQube instance
sonar.projectKey=gs
# this is the name displayed in the SonarQube UI
sonar.projectName= gs
#sonar.language=java
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=.
#sonar.binaries=C:/Users/Administrator/Desktop/codes/web/yyxw/WebRoot/WEB-INF/classes/com
sonar.java.binaries=項目class文件
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

#Set jacoco Configuration
#Code coverage tool
sonar.java.coveragePlugin=jacoco
#Path to the JaCoCo report file containing coverage data by unit tests. The path may be absolute or relative to the project base directory
sonar.jacoco.reportPath=項目路徑/jacoco.exec
#Path to the JaCoCo report file containing coverage data by integration tests. The path may be absolute or relative to the project base directory
sonar.jacoco.itReportPath=項目路徑/jacoco.exec
#sonar.jacoco.reportMissing.force.zero
sonar.jacoco.reportMissing.force.zero=false

5、下載SonarQube Scanner:Sonar插件,讀取sonar-project.properties用於掃描源碼,將Jacoco數據結果文件對應到源碼中去。SonarScanner最新版本是4.2,但需jdk11了。咱們的環境是jdk8,只能用SonarScanner3.2。

https://docs.sonarqube.org/pages/viewpage.action?pageId=11641634&navigatingVersions=true 

6、安裝SonarQube Scanner:將壓縮包解壓,粘貼復制到SonarQube所在文件夾,將文件合並即可。

 

 

7、將Sonar的bin文件目錄加到系統環境變量中

 

 

8、驗證環境變量是否加入成功:打開cmd,直接輸入sonar-scanner.bat出現圖中界面即成功。

9、cmd執行匹配結果

打開項目及sonar-project.properties文件所在目錄

cd [項目代碼路徑],並在此路徑下啟動sonar,執行sonar-scanner.bat。

 

 

10、注意查看dos界面打印信息,如果有錯誤信息,具體查看報錯原因。

執行完是Excution Success。

 

11、登錄http://localhost:9000,打開匹配的項目,不同的顏色對應不同的覆蓋程度,顏色越紅覆蓋得越少,顏色越綠,覆蓋得越多,點擊不同的版塊,可以看到版塊內部的覆蓋情況。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM