sonar實戰


需求:代碼覆蓋率

1.起先的目的是為了看代碼覆蓋率 實踐的工具是jacoco.實踐用的是命令行的方式  

2.后又了解到sonar 可以做代碼質量分析   可以更進一層的分析代碼

 

----------------------------------------------------實踐步驟-----------------------------------------------------------------

1.java環境准備 1.8

2.下載SonarQube安裝包-解壓即可,官網下載地址https://www.sonarqube.org/downloads/ 

3.MySql數據庫,新建一個數據庫sonar     create database sonar; 

4.SonarQube安裝目錄E:\sonarqube-7.0\sonarqube-7.0\conf\sonar.properties配置文件  

#----- MySQL 5.6 or greater
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

5.點擊執行E:\sonarqube-7.0\sonarqube-7.0\bin\windows-x86-64\StartSonar.bat,打開http://localhost:9000,如果顯示sonar主頁,則sonar安裝成功。 

6.sonar主頁,點擊配置-應該市場-搜索  下載JAVA相關的:Checkstyle、Findbugs、PMD   下載完后重啟

7.漢化sonar  搜索chinese Pack  

8.下載sonar-scanner-解壓即可:(這個工具是對源碼進行掃描,並將結果保存到數據庫以便用上面的sonarqube進行分析)

  下載地址:    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

9. sonar-scanner配置文件修改:

修改配置文件E:\sonarqube-7.0\sonar-scanner-4.2.0.1873-windows\conf\sonar-scanner.properties

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.jdbc.username=root

sonar.jdbc.password=123456

10.環境變量配置

新建:

(1)name :       SONAR_HOME                                    value:  E:\sonarqube-7.0\sonarqube-7.0 

(2)name:   SONAR_RUNNER_HOME                     value:E:\sonarqube-7.0\sonar-scanner-4.2.0.1873-windows

打開path,輸入%SONAR_HOME%\bin;   

打開path,輸入%SONAR_RUNNER_HOME%\bin;

11.打開CMD窗口,輸入 sonar-scanner -version,看到下圖說明成功

12.找到需要掃描的項目,在項目的根目錄下新建 sonar-project.properties文件,輸入以下信息

sonar.projectKey=My_First_Maven_Project

sonar.projectName=My_First_Maven_Project

sonar.version=0.0.1-SNAPSHOT

sonar.sources=src     --寫相對路徑
sonar.sources=target --寫相對路徑

#sonar.sources=E:\Eclipsefile_myh\My_First_Maven_Project\src\main\java

#sonar.java.binaries=E:\Eclipsefile_myh\My_First_Maven_Project\target\classes


說明:

sonar.projectKey:SonarQube服務器每次添加一個項目時要求填寫一個項目名和關鍵字,此處是關鍵字

sonar.projectName:項目名,就和你的項目名稱保持一致就好了

sonar.version:項目版本

sonar.sources:要掃描的源碼路徑,我在此處就直接寫項目的絕對路徑了    src\main\java 源碼路徑 

sonar.java.binaries:項目生成的class文件的路徑    class 文件的路徑   

13設置成功后,啟動sonarqube服務  127.0.0.1:9000頁面  正常訪問

14.在cmd進入項目所在的根目錄,輸入命令:sonar-scanner 開始掃描 (sonar-scanner -X  輸出的信息更詳情一點。。。推薦使用)

15.打開http://localhost:9000/,我們會看到主頁出現了分析項目的概要圖

 

------------------------------------------軟件版本----------------------------------------------------

版本:

JDK 1.8.0

sonarqube-7.0

sonar-scanner-2.8

sonar-java-plugin-5.6.0.15032

-------------------------------------------------實踐成果----------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 ----------------------------------------------遇到的問題----------------------------------------------

報錯一:

報錯參考資料:https://blog.csdn.net/weixin_33877885/article/details/92145638

報錯:

java.lang.IllegalStateException: Fail to download the plugin (java, version 5.6) from https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar (error is : Fail to download: https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar (no proxy))

其中:

https://binaries.sonarsource.com/Distribution/sonar-java-plugin/sonar-java-plugin-5.6.0.15032.jar


自己電腦 安裝的版本:sonar-java-plugin-5.1.0.13090.jar  

路徑----E:\sonarqube-7.0\sonarqube-7.0\extensions\plugins

下載最新版本即可

 


報錯二:

5、啟動sonarqube 出現Process exited with exit value [es]: 1異常 查看logs 的es的log

java.lang.IllegalStateException: failed to obtain node locks, tried [[D:\zz\sonarqube-7.6\data\es5\sonarqube]] with lock id [0];


failed to obtain node locks, tried [[E:\sonarqube-7.0\sonarqube-7.0\data\es5\sonarqube]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?

 

被鎖定了,要么重啟要么注銷---------自己還沒實踐

報錯三:
sonar.sources=E:\Eclipsefile_myh\My_First_Maven_Project\src\main\java
sonar.java.binaries=E:\Eclipsefile_myh\My_First_Maven_Project\target\classes
正確寫法:
sonar.sources=src
sonar.java.binaries=target
 
以上兩個應該顯示相對路徑 ,絕對路徑會報錯。。。。。  ---
 
報錯四:參考:https://www.cnblogs.com/zhongyuanzhao000/p/11686633.html
SonarQube執行代碼分析時,報錯ERROR: Unable to create symbol table for : /**/*.java java.lang.IllegalArgumentException: Unsupported class file major version 55
 
看下面的截圖  是sonarqube  scanner  4.2.0.1873 對應的JDK 版本是11.0.3
自己本地的版本是1.8.0 
版本不匹配問題
 
報錯五:
16:13:35.345 ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Can not execute Checkstyle
 
 
 
報錯六:
org.sonar.java.se.ExplodedGraphWalker$MaximumStepsReachedException: reached limit of 16000 steps for method findNewDoctorList#200 in class PatientManageBiz
 
看別人的解答,感覺無礙
https://stackoverflow.com/questions/34065727/error-could-not-complete-symbolic-execution-reached-limit-of-10000-steps

 

------------------------------------------------------eclipse 使用技巧-------------------------------------------------------------------------

1.src/main/java   源碼路徑

2.src/test/java   單元測試用例的路徑

3.單元測試框架有:junit4,、testNg 使用的是junit4 

4.項目右鍵--maven --update project  更新項目

5.project --clean  重新生成編譯后的class文件

6. 項目右鍵--build path--configure build path --add libraries --junit--junit4

7.pox.xml配置文件

<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>


免責聲明!

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



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