為.NetCore應用加上程式碼品質分析
以下已.NetCore為例,簡單架設、運行,並紀錄過程
基本安裝/使用
1.有兩種架設方式
- 自行下載、設定、執行(需要Java JDK 11以上)
- 從Docker
2.下載完成後,執行 StartSonar.bat
3.若遇到找不到java之類的錯誤,設定環境變數也沒用時,可以試著從這邊指定路徑
4.打開網址 http://localhost:9000/,應該可以就可以看到SonarQube的網站啟動了
5.新增一個Project,並且保存好key
6.選擇程式語言
7.在要執行的裝置上安裝tool
dotnet tool install --global dotnet-sonarscanner
8.接著回到要分析的專案上,先啟動分析
dotnet sonarscanner begin /key:<ProjectKey> /name:<ProjectName> /d:sonar.key=<Key> /d:sonar.host.url=<Url>
9.執行要做的事情
dotnet build
dotnet test
10.結束分析,開始上傳結果到SonarQube
dotnet sonarscanner end
11.回到SonarQube,可以看到報告都呈現在上面了
加上Test Code Coverage
1.這邊使用 Coverlet 來產生測試涵蓋率的結果,先在要執行分析的環境安裝
dotnet tool install --global coverlet.console
2.需要產生報告的專案也需要加上nuget package
dotnet add package coverlet.msbuild
3.接著與上面第7步驟雷同,不過我們調整下指令
- /d:sonar.cs.opencover.reportsPaths - 指定report的路徑,多個檔案可以用逗號分隔
dotnet sonarscanner begin /k:"<ProkectKey>" /d:"sonar.host.url=<SonarUrl>" /d:sonar.login=<SonarKey> /d:sonar.cs.opencover.reportsPaths="<Project>.Tests/opencover.xml,<Project>.Tests.E2E/opencover.xml" /d:sonar.scm.provider=git
4.以及執行測試的指令
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput="opencover.xml"
5.其餘部分皆相同,接著只要再執行 dotnet sonarscanner end,就能在SonarQube上看到測試涵蓋率了
簡單筆記一下過程,省的下次要再花時間找指令
和步驟
2020/0420 補充
可以更改為中文語系