使用sonar進行代碼質量檢查


最近公司要求,學習了一下使用sonar進行代碼分析檢查。其中走了許多坑,配置也崩潰好幾次。。。因此寫下詳細步驟以防以后再碰到這樣的坑

一、安裝Sonar

環境:Windows10,sonarqube6.7,java1.8,MySQL5.7.1  (注:用來檢查java1.8以下的項目依舊可以使用,但是環境變量得是1.8的才能啟動,我本次使用檢查的項目就是jdk1.7)

 

Sonar官網地址:https://www.sonarqube.org/downloads/,首頁截圖如下:

1、配置jdk1.8的環境

2、安裝mysql數據庫(也可以使用自帶的數據庫) 

  配置數據庫用戶:

CREATE DATABASE sonarCHARACTER SET utf8 COLLATE utf8_general_ci;   
  
CREATE USER 'sonar'IDENTIFIED BY 'sonar';  
  
GRANT ALL ON sonar.* TO'sonar'@'%' IDENTIFIED BY 'sonar';  
  
GRANT ALL ON sonar.* TO'sonar'@'localhost' IDENTIFIED BY 'sonar';  

3、下載sonarqube6.7,解壓到自己指定的目錄下(我的路徑是:D:\sonarqube-6.7)

   配置sonar文件數據庫信息(如果不用mysql或其他數據庫的可以跳過本步驟):在D:\sonarqube-6.7\conf 下打開sonar.properties 找到mysql定義的地方,修改為:

  

sonar.jdbc.username=sonar  
  
sonar.jdbc.password=sonar  
  
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false  
  
sonar.web.port=9000  

  此處的用戶名密碼即為剛才創建的,9000端口是啟動服務器后訪問的端口地址,也可以設置為其他的

4、啟動運行sonarqube6.7

  在安裝路徑D:\sonarqube-6.7\bin下會有不同操作系統對應的版本,,找到自己對應的版本,我的是win 64 ,進入之后點擊啟動服務批處理文件 D:\sonarqube-6.7\bin\windows-x86-64

  如果不出意外的話,在大概幾十秒之后可以在命令行窗口看到啟動成功的信息如下:

    PS:我在啟動時遇到了幾個錯誤,大致解決方法可以分為幾類:

      1 .連接mysql數據庫出錯。。。這個時候先確定mysql是否可以正常連接,我當時就是因為沒有啟動mysql服務就 啟動sonarqube6.7了。。其他情況還可能使mysql的驅動版本不對,,這個時候D:\sonarqube-6.7\lib\jdbc\mysql 下面看看這個jar包對應不。

     2.可能是因為jdk環境不對。。。我電腦上由於項目版本較多,安裝了jdk1.6、1.7、1.8的,可以直接在cmd窗口輸入java -version,如果不是1.8的話需要改為1.8

      修改方式:修改環境變量中JAVA_HOME是1.8的路徑。。我當時修改成了1.8的還是不對,,然后搜索一波,發現我1.7的是使用安裝包自動安裝的,因此在C盤下有java.exe,直接刪除即可。

 啟動成功之后訪問localhost:9000即可看到頁面

 5、下載並配置插件sonar-scanner-2.6     下載地址:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

此處可以看到當前最新版本是3.0.3的2018-01-09,我當時下載的時候下載的版本是2.6的,,大家可以在以前版本里面找到,,不過下載最新的應該也沒問題(並沒有試過,大致猜測哈)

 

下載之后是個zip壓縮包,將其解壓到自己指定路徑下。我的路徑是D:\tool\sonar-scanner-2.6。

 

 然后直接在環境變量的path下面新建一個環境變量,指向D:\tool\sonar-scanner-2.6\bin    這一步是保證后面使用插件命令可以找到目錄

 

下載完后找到配置文件的路徑,編輯它D:\tool\sonar-scanner-2.6\conf\sonar-scanner.properties,,我直接加上mysql的即可

#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here

#----- Default SonarQube server
#sonar.host.url=http://localhost:9000

#----- Default source code encoding
#sonar.sourceEncoding=UTF-8

#----- Global database settings (not used for SonarQube 5.2+)
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar

#----- MySQL
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8

#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE

#----- Microsoft SQLServer
#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor

6、開始測試項目

      到自己要測試的項目根路徑下面新建一個sonar-project.properties文件  。比如我要測試的項目路徑是D:\Java\Test,,就在Test下建立sonar-project.properties文件,文件中配置要測試的信息,如下:

 

#required metadata 
#projectKey項目的唯一標識,不能重復

sonar.projectKey=testuser
sonar.projectName=testuser
sonar.projectVersion=1.0  
sonar.sourceEncoding=UTF-8 
sonar.modules=java-module
sonar.java.binaries=.
#,javascript-module,html-module 
  
# Java module 
java-module.sonar.projectName=Java Module 
java-module.sonar.language=java 
# .表示projectBaseDir指定的目錄 
java-module.sonar.sources=. 
java-module.sonar.projectBaseDir=src/main/java 
sonar.binaries=classes
   
# JavaScript module 
#javascript-module.sonar.projectName=JavaScript Module 
#javascript-module.sonar.language=js 
#javascript-module.sonar.sources=js 
#javascript-module.sonar.projectBaseDir=src/main/webapp
   
# Html module 
#html-module.sonar.projectName=Html Module 
#html-module.sonar.language=web 
#html-module.sonar.sources=pages 
#html-module.sonar.projectBaseDir=src/main/webapp

  此處對HTML,JavaScript的配置我直接刪除了。。在代碼中,紅色的一句我暫時也沒明白什么意思,,但是最開始沒加的時候啟動檢測會報錯

后面不管我加上什么文件名都給我說無法匹配。。所以我就用.來暫時用着,,,大家有明白的可以告訴我一下呀。

 

開始測試代碼了:在項目的根目錄打開命令行窗口,執行:sonar-runner命令,,如果前面都沒錯誤的話,你將會看到命令行不斷地分析代碼信息。。最后完成結果如下

。。這時就代表你檢查成功啦。。你可以在 http://localhost:9000/projects?sort=-analysis_date 中看到結果啦:

 


免責聲明!

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



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