關於 SonarQube
SonarQube 是一套靜態掃描工具,提供 IDE 擴充元件、Console Model 及 CI Model 等,三種不同的操作型態,可以視個別使用情境進行安裝使用。
本文僅介紹 IDE 擴充元件及 Console Model 兩種方式,而 CI Model 部分因為與 CI Server 相關,再另文說明。
IDE 擴充元件
針對 IDE 的擴充元件,是 SonarLint 這個名稱,除了 Visual Studio 之外,還有提供 Eclipse、IntelliJ 以及 Vs Code 的擴展元件,而要在 Visual Studio 安裝 SonarLint 的擴充元件,則要依不同版本,安裝對應擴展元件:
在 Visual Studio 中,透過 [Tools/Extenstions and Updates] 進行安裝即可。

安裝完畢後,就會自動就開啟的程式碼檔案進行掃描,並將發現的 Issue 列在 Error List 的頁籤清單。
Console Mode
要採用主控台模式進行掃描前要確認系統有必要元件。
- JAVA 11
- SonarQube 8
- Sonar Scanner
JAVA 11
安裝 JAVA 11 是因為 SonarQube 8 是以 JAVA 撰寫,所以需要在 JAVA 11 的環境下才能執行,可以在安裝之前先透過下述命令確認當前已安裝的 JAVA 版本,若是 JAVA 11 就不需要這個安裝程序。
Java -version

-
步驟一:取得安裝程式
從這裡取得 OpenJDK 的安裝程式
-
步驟二:執行安裝程式
就一直下一步後就會完成安裝。
-
步驟三:確認版本
重開命令視窗後,再次確認目前系統的 JAVA 版本。

SonarQube 8
- 步驟一:下載程式壓縮檔
SonarQube 是免安裝的架構,直接執行對應的執行檔即可啟動服務,所以首先要到這裡下載對應環境的壓縮檔。

在這裡就點選Download Community Edition 按鍵,下載 Community 版本使用即可。

-
步驟二:解壓縮檔案
然後就是解壓縮下載的壓縮檔。

-
步驟三:啟動服務 到解壓縮的路徑的 [解壓縮目錄]/bin/windows-x86-64 子目錄下,可以看到 StartSonar 執行檔,透過 Command line 執行後就可以啟動。
StartSonar
啟動需要一些時間,看到 SonarQube is up 輸出時,就是啟動完畢了。

-
步驟四:確認狀態 如何進一步確認系統已經正常啟動,可以透過瀏覽器檢視系統。
http://localhost:9000

Sonar Scanner
Sonar Scanner 有分為 .net (包含 C# 及 VB ) 的非 .net 兩種不同的操作方式。
- 歩驟一:下載壓縮檔
-
步驟二:解壓縮
將下載回來的壓縮檔解壓縮,此步驟中解壓縮的目錄路徑就是後面步驟的 ScannerHome 路徑。 -
步驟三:將 [ScannerHome]/bin 設定為 Windows 的 Path 環境參數,,不設定的話就是後續步驟在使用 Scanner 時都得使用完整路徑,有些麻煩。

- 步驟四:掃描程式
- .net(C#/VB)
開啟 Command Line 視窗後,移動到程式的 .sln 檔案的目錄下,接著需要先啟動 SonarScanner 再以 MSBuild 對專案進行重編,最後再停止 SonarScanner 將掃描結果送到 SonarQube 儲存。
SonarScanner.MSBuild.exe begin /k:"project-key" MSBuild.exe <path to solution.sln> /t:Rebuild SonarScanner.MSBuild.exe end - .net(C#/VB)
- 步驟五:透過 SonarQube 檢查掃描結果
開啟 SonarQube 網站,就可以看到掃描結果。
小結
SonarQube 是一套用於檢查程式的工具,可以透過定期檢查,觀察系統的程式碼的改善空間及是否有改善。

