前情提要
承上篇,在升級了 .NET 6.0.x 後發現,
SonarCloud 的測試含概率不知何時變成 0 ,
相對應的 Code Smell 也沒有作檢查, 加上原本的 github/workflow 並沒特別分門別類,
所以真正的錯誤原因已經不可考, 修復 SonarCloud 的過程中特別撰文記錄.
實作
第一件事是在升級 .NET 6.0 後, 試著在本地環境上執行檢查並上傳到 SonarCloud.
前置條件
- 使用的電腦為 MacBook Pro (M1 晶片)
- 安裝 .NET 6.0.x 以後的版本
- 安裝 Java 11
- 安裝 dotnet-sonarscanner
- 註冊 sonarcloud.io 並建立專案
本機的執行步驟
dotnet sonarscanner begin
1
2
3
4
5
6
7dotnet sonarscanner begin \
/o:"marsen-github" \
/k:"Marsen.NetCore.Dojo" \
/n:"Marsen.NetCore.Dojo" \
/d:sonar.host.url="https://sonarcloud.io" \
/d:sonar.cs.opencover.reportsPaths="./test/_/TestResults/_/coverage.opencover.xml" \
/d:sonar.login="****"參數說明
/o
: Organization Key/k
: Project Key/n
: Project Name/d:sonar.host.url
: sonar server url/d:sonar.cs.opencover.reportsPaths
: OpenCover coverage report/d:sonar.login
: 登入 sonar server 的 tokendotnet build
1
dotnet build Marsen.NetCore.Dojo.sln
dotnet test
1
2
3dotnet test Marsen.NetCore.Dojo.sln \
--logger trx --collect:"XPlat Code Coverage" \
-- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencoverdotnet sonarscanner end
1
dotnet-sonarscanner end /d:sonar.login="****"
Github Workflow 的設定
目前並沒有官方的解決方案 ,
我們使用 SonarScanner for .NET 來執行 workflow ,
這個專案十分簡潔,可以快速看一下內容,了解到怎麼實作一個 workflow ,
因為非官方解決方案,所以我 fork 這個方案避免意外發生.
而在 workflow 中設定的也是使用 fork 的方案
設定參考如下
1 | - name: SonarCloud Scan |
其它
注意到 opencover 的開發者已經不再維護(2021 年 6 月),並建議使用 AltCover.
但是 sonarcloud 並未支援 altcover 的報表, 這裡有相關的 issue 追蹤中.
參考
(fin)