SonarQube 是一套程式碼品質分析工具,分析程式是否存在 Bug、漏洞或不好的寫法,第一關品質分析就交給它了,它的運作方式很簡單,透過 SonarQube Scanner 把報告提交到 SonarQube Server,這篇我會用 .NET Core 的專案實驗。
下圖出自官網 https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/introduction/

開發環境
- Windows 11 Home
- .NET 8
- SonarQube:9.9.8-community
- Postgres:17.2
- Rider 2024.3.2
安裝 SonarQube Server
version: "3"
services:
sonarqube:
image: sonarqube:9.9.8-community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
networks:
- sonarQubeNet
volumes:
- ./sonarqube_data:/opt/sonarqube/data
- ./sonarqube_conf:/opt/sonarqube/conf
expose:
- 9000
ports:
- 9000:9000
db:
image: postgres:17.2
ports:
- 5432:5432
networks:
- sonarQubeNet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- ./postgresql:/var/lib/postgresql
- ./postgresql_data:/var/lib/postgresql/data
networks:
sonarQubeNet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
啟動容器
docker compose up -d

- 帳號:admin
- 密碼:admin
登入後變更密碼。
新增專案



建立 token

這時候會產生一組 Token,保管好,不要外洩。

安裝 SonarScanner
切到專案資料夾,依序執行以下指令
安裝全域工具
dotnet tool install --global dotnet-sonarscanner
若沒有 JDK,執行以下
scoop install openjdk23
產生報告並上傳到 SonarQube
dotnet sonarscanner begin /k:"demo" /d:sonar.host.url="http://localhost:9000" /d:sonar.login="sqp_989aa34c1a7eeb90dad367511382488922bd8607"
dotnet build
dotnet sonarscanner end /d:sonar.login="sqp_989aa34c1a7eeb90dad367511382488922bd8607"

報告內容如下:

SonarQube for IDE
除了用 SonarScanner 提交報告之外,Rider 也可以用 SonarQube for IDE
Rider:SonarQube for IDE - IntelliJ IDEs Plugin | Marketplace
安裝好之後,就會自動診斷,根據他跳出來的訊息就可以逐一處理

SonarQube for IDE 可以連接 SonarQube Server,不過使用起來的感覺沒有太大的差異,更多的操作請參考
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET