SonarQube 是常見的程式碼分析工具,本篇介紹如何透過 Docker 進行 .NET Core 程式碼分析;
並搭配 Coverlet 產生程式碼測試覆蓋率分析,一併傳送至 SonarQube。
SonarQube
如果沒有 SonarQube 環境的話,可透過以下 docker 指令,快速啟動 SonarQube:
1 | docker run --name SonarQube -p 9000:9000 sonarqube |
啟動後,用瀏覽器打開 http://localhost:9000/ 就能看到 SonarQube 站台。
預設帳號/密碼為:admin / admin
登入後,可新增 SonarQube 專案,步驟如下:


分析報告要上傳到 SonarQube Server 時,需要用到
Project Key及步驟 8 的Token。
Dockerfile
build-unit-test.dockerfile
1 | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 |
Docker Image 建置指令:
1 | docker build -f build-unit-test.dockerfile . |
前一篇文章 Docker 教學 - .NET Core 測試報告 (Coverlet + ReportGenerator) 有基本介紹一下 Coverlet,本篇就不再贅述。
- 啟動 SonarScanner
- /k
SonarQube 的Project Key是必填欄位。 - /d:sonar.host.url
是 SonarQube Server 的位置。 - /d:sonar.login
SonarQube 的Token,錯誤的話無法成功上傳到 SonarQube Server。 - /d:sonar.exclusions
忽略程式碼分析的檔案或目錄。可用,隔開指定多個 Patterns。
此例忽略*.js、*.ts及*.css的檔案,如果要分析*.js、*.ts或*.css,還需要在Dockerfile安裝node.js。 - /d:sonar.cs.opencover.reportsPaths
指定匯入 OpenCover 格式的測試報告路徑。可用,隔開匯入多個檔案。 - /d:sonar.coverage.exclusions
忽略測試覆蓋率分析報告的檔案或目錄。可用,隔開指定多個 Patterns。
- /k
- 結束 SonarScanner
- /d:sonar.login
SonarQube 的Token,錯誤的話無法成功上傳到 SonarQube Server。
- /d:sonar.login
執行結果

