天天看點

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

Windows下配置SonarQube Scanner檢測分析代碼

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

首先這裡繼續引用下SonarQube的架構圖,在上文中記錄了Windows下SonarQube服務及資料庫環境的配置,本文則在此基礎上,簡單記錄SonarQube Scanner代碼分析工具的配置及使用,文中發現有問題或疏漏,希望可以得到您的回報。

對于SonarQube Scanner這裡不做太多介紹了,至于為什麼使用SonarQube Scanner,看這裡

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

SonarQube官方文檔 推薦使用,更多原因,自行百度了~

Maven配置SonarQube Scannar實作代碼分析

此處通過在Maven中配置Sonar Scanner,然後使用

mvn sonar:sonar

指令完成對代碼的分析,該方式針對Maven建構項目,Gradle建構的項目未測試,自行嘗試。

Maven環境配置

為了可以使用Maven指令運作Sonar來分析項目代碼,首先需要将Maven的bin目錄添加到環變量内,如下:

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

配置完成後,在指令行視窗使用指令

mvn -v

檢視Maven版本等資訊,驗證環境變量配置完成

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

Maven增加SonarQube Scanner配置

首先在 Maven 的

conf

目錄下找到Maven的配置檔案

settings.xml

,搜尋到

<profiles>

節點,在其中添加SonarQube Scanner的配置,如下圖:

<profiles>
    
     <!-- 複制以下内容 -->
   
    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <!-- 配置 Sonar服務位址,此處為本地服務 -->
            <sonar.host.url>
                http://127.0.0.1:9000/
            </sonar.host.url>
        </properties>
    </profile>
    
    <!-- 複制以上内容 -->
    
</profiles>
           
注意: 若在Maven的

conf

目錄下未找到

settings.xml

配置檔案,則可以在Maven倉庫預設目錄

C:\Users\[你登陸賬号的使用者名]\.m2

下查找。

Maven項目目錄執行指令分析

進入想要檢測分析的Maven項目目錄,在項目根目錄打開指令行,輸入指令

mvn sonar:sonar

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

首次進行代碼檢測掃描時,會下載下傳SonarQube Scanner相關jar包,類似下圖:

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

掃描完成後,會看到

BUILD SUCCESS

的提示,到此代碼的檢測掃描完成。

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

IDEA内通過Maven執行SonarQube Scanner分析

下面介紹,在上步操作完成的基礎上,怎麼在IDEA開發工具内使用使用SonarQube Scanner進行代碼檢測分析。

首先IDEA打開需要檢測分析的Maven項目,在

Run/Debug Configurations

中,添加一個Maven的運作配置,具體配置如下:

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

配置完成後,選擇此運作方式,點選運作,控制台可以看到類似上步中指令行視窗的輸出内容,等待出現

BUILD SUCCES

的提示字樣後,表示代碼的檢測分析完成,此時可以在SonarQube服務内檢視分析結果。此處僅測試IDEA環境,Eclipse等其他IDE開發工具自行測試。

SonarQube Scanner配置

前面說了Maven使用SonarQube Scanner完成對Maven代碼的檢測分析,下面記錄直接下載下傳的SonarQube Scanner配置及使用。

SonarQube Scanner下載下傳

可以在此處下載下傳支援各種環境的SonarQube Scanner,根據自己需要進行選擇即可。在SonarQube官網下載下傳對應系統版本的SonarQube Scanner cli,該版本支援指令行模式。

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

下載下傳完成後,任意目錄下解壓,目錄結構大緻如下,目錄作用類似SonarQube

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

SonarQube Scanner配置

  • 配置環境變量(為了可以全局使用SonarQube Scanner)
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
  • 驗證環境變量是否配置成功
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
  • 添加檢測掃描的項目

    打開SonarQube Scanner的配置檔案(

    ..\sonar-scanner-3.2.0.1227-windows\conf\sonar-scanner.properties

    ) ,配置如下
#----- Default SonarQube server
  sonar.host.url=http://localhost:9000
  
  #----- Default source code encoding
  sonar.sourceEncoding=UTF-8
  
  # 配置項目的Key(每個項目唯一的項目鍵,使用Maven時設定為 <groupId>:<artifactId>)
  sonar.projectKey=com.codersoft:cms
  
  # 配置分析的項目在SonarQube服務界面顯示的名稱
  sonar.projectName=cms
  # 配置分析的項目的版本(使用Maven時取<version>的值)
  sonar.projectVersion=1.0
  
  # 配置要分析的項目根目錄
  sonar.projectBaseDir=D:/work/workspace/gitee/cms/rbac/cms
  # 配置包含源檔案的目錄(未設定,則從預設的Maven源代碼位置檢索)
  sonar.sources=.
  	
           

添加完成後,指令行視窗,執行指令

sonar-scanner -Dsonar.java.binaries=.

(SonarQube的sonar-java-plugin插件版本大于4.12後,不能直接使用

sonar-scanner

指令,需要提供對應源碼的位元組碼,詳情看文末異常問題記錄)

更多SonarQube Scanner内容見SonarQube官網文檔, 更多SonarQube配置的分析參數見此處

IDEA配置SonarLint插件

IDEA支援不少用于代碼品質檢測的插件,如阿裡巴巴的代碼規範插件、FindBugs等,此處可以嘗試使用SonarLint插件。

SonarLint插件安裝

在IDEA中打開設定界面(

File -> Settings

) , 選擇

Plugins

進入IDEA的插件市場搜尋

SonarLint

進行安裝

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

等待下載下傳安裝完成後,重新開機的IDEA中即可完成安裝。

安裝完成重新開機IDEA後,會出現如下提示,此時需要對SonarLint插件進行配置

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

安裝提示,點選

SonarLint project configuration

進行SonarLint 項目的配置

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

或在設定中進行配置

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

此處關閉遠端SonarQube Server的綁定,即使用本地SentLint插件預設的代碼檢測規則。這樣就可以在本地環境下使用預設規則進行代碼檢測分析,可以點選菜單項

Analyze

,找到

Aanlyze all files with SonarLint

的子菜單項

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

嘗試點選此項,來檢測分析目前項目的所有檔案

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

單個檔案的檢測,可以在想檢測檔案右鍵選擇

SonarLint

進行檢測,具體操作此處不贅述。

SonarLint插件配置

SonarQube可以針對項目進行檢測規則等設定,要讓IDEA中SonarLint插件同步使用SonarQube服務中更新的規則,則需要如下配置

  • 配置SonarQube Server
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
    支援兩種登陸驗證方式,此處使用本地SonarQube服務,則使用賬号密碼登陸(遠端項目,可以使用Token驗證)
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
  • 綁定配置SonarQube服務内的項目,用于同步檢測規則
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

    注意:SonarQube沒有服務時,此處無法配置,可以通過SonarQube Scanner或Maven來進行項目代碼的檢測分析,實作項目的添加。

    配置完成後,回到服務配置界面,點選更新規則,即可擷取SonarQube服務上針對該項目配置的檢測規則。

最後,SonarQube的Token,可以在使用者設定裡進行增删

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

SonarQube服務内檢視分析結果

完成代碼的分析檢測後,可以在浏覽器通路SonarQube服務位址,此處為本地搭建服務,則通路位址

http:\\localhost:9000

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

可以在Sonar服務管理頁面内看到新掃描的Maven項目的分析報告,此時根據需要檢視對應内容,不再贅述。

SonarQube Scanner異常問題記錄

SonarQube Scanner執行

sonar-scanner

指令時,出現錯誤時,可以通過執行

sonar-scanner -X

來輸出詳細錯誤日志,友善問題的排查。

異常 AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property

該問題原因見官方文檔

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

大體意思,自SonarJava 4.12後,不使用Maven或Gradle建構工具來分析代碼時,必須手動提供與源代碼對應的位元組碼,否則就會分析失敗,并出現該異常提示。

可以嘗試通過以下方式處理:

  • 執行指令修改為

    sonar-scanner -Dsonar.java.binaries=.

  • 或在配置檔案内添加下列配置(追加内容在上文基礎上進行)
    # sonar.sources=.
    # 此處配置該項目的子項目的源碼檔案目錄
    sonar.sources=./cms-common/src,./cms-dao/src,./cms-service/src,./cms-tester/src,./cms-web/src
    
    # SonarJava 4.12 以後,不使用Maven等建構工具分析代碼,則必須手動提供對應源代碼的位元組碼
    # 此處配置該項目的子項目的class位元組碼檔案目錄
    sonar.java.binaries=./cms-common/target/classes,./cms-dao/target/classes,./cms-service/target/classes,./cms-tester/target/test-classes,./cms-web/target/classes
    
               
  • 下載下傳SonarJava 4.12之前版本的插件,替換現有版本,插件源碼下載下傳位址 ,插件jar包下載下傳位址
    Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄
    下載下傳完成後,替換

    ..\sonarqube-6.7.5\extensions\plugins\

    目錄下的

    sonar-java-plugin-xxx.jar

    (本文SonarQube的SonarJava插件版本為

    5.7.0.15470

    ) ,重新開機SonarQube服務即可。

網上很多文章提供第三種方法解決該異常,我下載下傳了

4.10.0.10260

版本的java插件jar包,按照此思路替換插件jar包後,重新開機服務,如出現下圖提示情況

Windows下配置SonarQube Scanner檢測分析代碼Windows下配置SonarQube Scanner檢測分析代碼SonarQube服務内檢視分析結果SonarQube Scanner異常問題記錄

且運作

sonar-scanner

指令出現SonarQube服務(本文已經将SonarQube服務配置為系統服務)停止的情況,在嘗試清理

c:\user\[你目前登陸計算機的使用者名]\.sonar

下的檔案全部删除,然後重新開機服務,依舊出現上文提示,且服務過一段時間也會停止運作。具體原因暫不明确,初步認為是插件版本問題,不知是否還有還是其他問題,未做更多版本測試,本文暫不推薦第三種方法處理,如遇到此情況,且知道解決方案的希望告知,謝謝。

繼續閱讀