白箱掃描工具_Sonarqube_Windows環境版本作業方式

到sonarqube官網
https://www.sonarqube.org/

去載Community版





將壓縮檔解壓


SonarQube 是一款透過 Java 開發的原始碼檢測與品質管理系統,
其架構又細分為Server 與 Client 都是跨平台的。

首先記得電腦要有安裝OpenJDK (或只裝JRE)

Server端的作業

若是Linux 或MacOS就請自行到對應目錄去執行sonar.sh start 
sonarqube-9.2.4.50792\bin\linux-x86-64\sonar.sh start 

sonarqube-9.2.4.50792\bin\macosx-universal-64\sonar.sh start 

而Windows環境則是去執行bat檔

sonarqube-9.2.4.50792\bin\windows-x86-64\StartSonar.bat
這裡執行有跑錯誤資訊
目前電腦上裝的OpenJDK版本1.8過低問題




OK 到9.2版 至少要用到JDK11


基於未來 Oracle Java 會有收費的情況,一般企業、公司都傾向使用 OpenJDK


可以到github去下載對應jdk msi檔



螢幕左下角 搜尋「檢視進階系統設定」,或是於「本機」右鍵→「內容」→「進階系統設定」,進入「環境變數」





再次執行就可以成功




StartNTService.bat 啟動sonarqube系統服務
StartSonar.bat 命令列啟sonarqube服務(關閉命令列即關閉服務)
StopNTService.bat 停止sonarqube系統服務




用瀏覽器訪問http://localhost:9000,進入sonarqube頁面

預設賬號密碼
帳號:admin/密碼:admin

我在之後更改為 
帳號:admin/密碼:admin123



預設儀錶板




接下來要分析C#程式碼,必須借用SonarQube Scanner for MSBuild

Sonar檢測C#程式碼時需要預先編譯,而且C#程式碼必須用MSbuid進行編譯,其中
要求MSBuild在V14.0以上。


SonarScanner for .NET (GNU LGPL 3)


這裡有分成兩包msbuild一個for .net5 , 一個for .net4.6
$install_directory/sonar-scanner-(version)/bin





一樣把SonarQube Scanner for MSBuild
還有MSBuild也要 (vs2019路徑)
加入環境變數中
這裡採用for .net4.6的








在官方提供的指令範例(可能有點簡略一開始看不懂怎麼帶)

.net framework 系列專案 執行掃描指令

1
2
3
SonarScanner.MSBuild.exe begin /k:"project-key" /d:sonar.login="<token>"
MSBuild.exe <path to solution.sln> /t:Rebuild
SonarScanner.MSBuild.exe end /d:sonar.login="<token>"



.net core 系列專案 執行掃描指令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
dotnet <path to SonarScanner.MSBuild.dll> begin /k:"project-key" /d:sonar.login="<token>"
dotnet build <path to solution.sln>
dotnet <path to SonarScanner.MSBuild.dll> end /d:sonar.login="<token>" 


或者使用 .NET Core Global Tool

dotnet tool install --global dotnet-sonarscanner
dotnet sonarscanner begin /k:"project-key" /d:sonar.login="<token>"
dotnet build <path to solution.sln>
dotnet sonarscanner end /d:sonar.login="<token>"



稍微看官網英文參數介紹
由於我這邊預設沒有token
因此改採用帳號密碼的方式
這裡以.net framework 系列專案 執行掃描指令做示範

切到專案目錄下作執行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SonarScanner.MSBuild.exe begin /k:"project-key"
SonarScanner.MSBuild.exe begin /k:"project-key" /d:sonar.login="<token>"
SonarScanner.MSBuild.exe begin /k:"project-key" /d:sonar.login="<username>" /d:sonar.password=<password>

SonarScanner.MSBuild.exe begin /k:"puma-prey-main" /d:sonar.login="admin" /d:sonar.password="admin123"

MSBuild.exe /t:Rebuild


SonarScanner.MSBuild.exe end /d:sonar.login="<token>"
SonarScanner.MSBuild.exe end /d:sonar.login="<username>" /d:sonar.password=<password>
SonarScanner.MSBuild.exe end /d:sonar.login="admin" /d:sonar.password="admin123"







而當我們運行完就可以看到Sonarqube網頁儀表板
Projects更新了



Sonarqube 掃描後幫我們不僅分析出漏洞





也把code smell也順帶分析













Ref:
在Windows使用SonarQube + Ms SQL Server 2017 分析 C# 程式碼品質

[Jenkins]持續整合之路(七)程式碼檢查(SonarQube)


安裝 SONARQUBE - 為你的團隊建立軟體品質儀表板

一文搞定 SonarQube 接入 C#(.NET) 程式碼質量分析

Try Out SonarQube

[經驗分享]開源的原始碼檢測系統 - SonarQube

[Security] 利用免費開源資安檢測軟體 SonarQube 檢測 .NET Core 程式碼


[Java] Java JDK 下載、安裝、設定

Sonar Scanner for .NET

[實作筆記] 讓 SonarQube 檢查你的代碼

MSBuild 命令列參考

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header