在 Windows 用 Docker 快速跑起 SonarQube社群版10.6_針對.net framework專案

之前做過直接在本地架設Sonarqube的掃描儀錶板環境

時隔3年補充筆記透過Docker並用較新版本的來示範如何用Docker來建置原始碼掃描環境



這邊假設你電腦Windows 已安裝 Docker Desktop for Windows,並啟用 WSL2 後端
(Docker Desktop → Settings → General → Use the WSL 2 based engine)




Step1.在自行指定目錄下 E:\Docker\Sonarqube,準備好一個yaml。

version: "3"

services:
  sonarqube:
    image: sonarqube:10.6.0-community
    depends_on:
      - db
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
      SONAR_SEARCH_JAVAADDITIONALOPTS: "-Dnode.store.allow_mmap=false,-Ddiscovery.type=single-node"
    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs
    ports:
      - "9000:9000"
  db:
    image: postgres:14-alpine
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

volumes:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:

在此建立一組可持久化的 SonarQube Community 版+ PostgreSQL

Step2.啟動服務
docker compose up -d


Step3.確認sonarqube:10.6.0-community 以及 postgres:14-alpine 都是 Up 狀態
docker ps
也可從Docker Desktop茶看到已經在port:9000運行


之後就能嘗試用本地網址訪問,預設帳密admin/admin
http://localhost:9000
預設要求強密碼變更不能沿用admin這一組密碼
Admin@123

致此就能進行後續程式碼品質與資安掃描分析

當沒有要用此服務就下
docker compose down
要再啟用則是到相應目錄使用
docker compose up -d

SonarScanner for .NET
在解壓縮後該目錄中找尋到
SonarQube.Analysis.xml 這邊也有預設配置可調配


設置環境變數


儀錶板建立一個donet名稱專案
選擇localproject
設置專案Clean as You Code
可選預設Use the global setting


並建立一個專案應用的 token 具有時效性可以選擇30天還90天失效。

按Continue後接續可以選你專案程式語言用到的框架類型
這邊選.net 後會跳給你在細部細選是屬於.net core 還是.net framework的專案
針對.net framework專案就是使用到稍早下載解壓的SonarScanner for .NET

針對.net core專案則是用SonarScanner .NET Core Global Tool偏向用cli來下載安裝


現在準備一個.net framework asp.net mvc專案
cmd切換到該.net framework專案


第一動.執行 SonarScanner for .NET 的「Begin」步驟,用來把你的 MSBuild 建置「接上」SonarQube 分析。
連到伺服器、抓 Quality Profile / Quality Gate 設定,準備 Roslyn 分析器(C#/VB.NET)與規則集。在目前目錄下建 .sonarqube 暫存,讓後面的 MSBuild 使用

SonarScanner.MSBuild.exe begin /k:"dotnet" /d:sonar.host.url="http://localhost:9000" /d:sonar.token="sqp_fe9c5b21163b1a1d7007eee97d0760eac2aaee28"

它會準備掃描環境、下載規則、設定 MSBuild 的分析器,等你 MSBuild 編譯完,再用 End 把結果送回伺服器。
會建立.sonarqube

/k:"dotnet" 代表指向哪一個目標projectKey,用來唯一識別 SonarQube 上的專案。

/d:sonar.host.url="http://localhost:9000"
指定 SonarQube 伺服器位址, Docker 起來的 10.6 社群版默認9000這個port。


第二動.執行 MSBuild 作 Rebuild 目標專案
注意第二動作儀表板指令執行之前先確保你有裝visual studio並要將msbuild.exe加入系統環境變數
以目前電腦上裝的visual studio 2022 社群版路徑默認在這
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin



MsBuild.exe /t:Rebuild

在專案目錄之下執行程式碼重建



第三動.進行原碼掃描,上傳分析結果。
SonarScanner.MSBuild.exe end /d:sonar.token="sqp_fe9c5b21163b1a1d7007eee97d0760eac2aaee28"

專案龐大的話掃描需要一定耗時
當完成掃描結果上傳傳後就會看到success字眼

上傳之後儀表板這邊就會有顯示了
在此無資安低、中、高風險



Ref:
https://docs.sonarsource.com/sonarqube-server/10.6/analyzing-source-code/scanners/sonarscanner-for-dotnet
https://testerhome.com/topics/20767/show_wechat

留言

這個網誌中的熱門文章

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

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題