於windows系統上安裝SonarQube程式碼品質分析工具(本篇只著重於安裝流程)
前置安裝軟體:Visual Studio Enterprise
安裝程式:SonarQube 7.2版本
下載網址:https://www.sonarqube.org/downloads/
點選下圖的Developer Edition 7.2
安裝程式:Sonar-scanner
呈上圖同一頁面,可找到Related tools進行下載
下載後,解壓縮檔案(本案例是使用SonarQube7.1進行建置),將sonarQube-7.1放入D:/WORK;將sonarqube_runner放置D:/。
並設定環境變數,如下圖。
複製以下內容,貼上Command Line,執行
set CodeCoverage="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe"
set vsTestConsole="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
set coveragePath="%cd%\tests.coveragexml"
以系統管理員執行StartSonar.bat (不關閉),如下圖。
CMD切換至專案路徑下(如D:/ESUN,ESUN為自行設定之專案名稱)
執行MSBuild.SonarQube.Runner.exe begin /k:"ESUN" /n:"ESUN" /v:"1.0"/d:sonar.cs.vscoveragexml.reportsPaths="%CD%\VisualStudio.coveragexml"
重跑MSBuild(補充:Enterprise安裝完,會自動建置完MSBuild,無須另外安裝) , MSBuild.SonarQube.Runner.exe要使用sonar-scanner-msbuild-4.3.1.1372-net46.zip解壓縮後的
執行以下路徑程式:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
執行結果如下圖。
透過 Code Coverage Tools 產生涵蓋率實體檔(只跑UT專案的部分)
%CodeCoverage% collect /output:"%CD%\VisualStudio.coverage" %vsTestConsole% "D:\ESUN\ESUN.Tests\bin\Debug\ESUN.Tests.dll"
%vsTestConsole% /EnableCodeCoverage "D:\ESUN\ESUN.Tests\bin\Debug\ESUN.Tests.dll"
執行結果如下圖。(需先切換至專案目錄,如D:\ESUN)
上述指令,執行完成,會在該專案資料夾中產生TestResults資料夾,
進入TestResults資料夾下,也會產生一亂數資料夾,如下圖。(補充:每執行一次,就會產生亂數資料夾)
進入上述資料夾內會有一個.coverage檔案,(此檔案名稱也為亂數)。
將以上.coverage檔案複製貼到專案資料夾層級,如下圖
執行涵蓋率檔分析(參考指令)
%CodeCoverage% analyze /output:"%CD%\VisualStudio.coveragexml" "%CD%\VisualStudio.coverage"
執行結果如下圖,會於專案資料夾下產生.coveragexml,此格式為SonarQube站台讀取涵蓋率所用的檔案格式。
關閉SonarQube Runner
執行MSBuild.SonarQube.Runner.exe end
做完後即可使用站台觀看,結果如下:
預設URL為http://localhost:9000
※指令彙整
set CodeCoverage="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Dynamic Code Coverage Tools\CodeCoverage.exe" set vsTestConsole="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" set coveragePath="%cd%\tests.coveragexml"
MSBuild.SonarQube.Runner.exe begin /k:"ESUN" /n:"ESUN" /v:"1.0" /d:sonar.cs.vscoveragexml.reportsPaths="%CD%\VisualStudio.coveragexml"
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"
%CodeCoverage% collect /output:"%CD%\VisualStudio.coverage" %vsTestConsole% "D:\SonarCube\ESUN_source\ESUN\ESUN.Tests\bin\Debug\ESUN.Tests.dll"
%vsTestConsole% /EnableCodeCoverage "D:\SonarCube\ESUN_source\ESUN\ESUN.Tests\bin\Debug\ESUN.Tests.dll"
%CodeCoverage% analyze /output:"%CD%\VisualStudio.coveragexml" "%CD%\VisualStudio.coverage"
MSBuild.SonarQube.Runner.exe end |