[環境設定]SonarQube安裝流程(.NET開發專用)

  • 4327
  • 0

於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