[jenkins 2]使用SonarQube整合jenkins來幫忙找出C#的程式碼壞味道(以windows平台為例)

[jenkins 2]使用SonarQube整合jenkins來幫忙找出C#的程式碼壞味道(以windows平台為例)

前言

程式碼分析是非常重要的,而SonarQube是一套算很完整的解決方案,它提供的不止是c#而已,很多語言都有支援,可以幫我們找出很多種程式碼缺陷,就算我們不整合jenkins直接在本機上使用,也可以知道什麼是比較建議的寫法,而此篇則會介紹一下本機使用,還有在jenkins結合上的兩種做法。

導覽

  1. 下載SonarQube
  2. 在本機直接使用SonarQube來幫忙分析
  3. 使用jenkins來執行SonarQube
  4. 結論

下載SonarQube

首先請到官網下載(https://www.sonarqube.org/downloads/),下載完之後解壓縮進到bin目錄底下應該會看到如下圖,其實裡面包含了非常多平台的版本,我個人是選擇windows-x86-64的版本

接著再點進去,可以直接執行批次檔來打開SonarQube的站台,請直接執行StartSonar.bat

成功之後應該可以看到如下的樣子

接著直接訪問localhost:9000的話,就應該可以看到SonarQube首頁

另一種方式是我們可以透過指令來把SonarQube安裝成windows service,請見下面的指令

InstallNTService.bat 安裝
UninstallNTService.bat 移除

StartNTService.bat 開啟service
StopNTService.bat 停止service

底下則是示例,要先至我們要安裝的那層目錄,而且command line必須使用管理者身份開啟

接著必須到我們要安裝的目錄底下執行命令

我們就可以在windows服務裡面看到已經確實安裝了

在本機直接使用SonarQube來幫忙分析

就像stylecop一樣,其實我們使用SonarQube也不一定是要團隊使用,就算我們只是在本機使用,來規範自己也是一件好事,就像無形中有一個大師在旁邊幫我們code review一樣,時時的提醒著我們什麼地方可以改進,如果想在本機使用,首先我們必須要安裝相關msbuild的plugins,請至此下載(https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild),然後解壓縮出來,應該可以看到裡面有這些檔案

接著把剛剛下載這層的目錄位置加到環境變數的系統變數的path的裡面

接著可以直接到我們要執行的專案底下,執行相對應的命令,以筆者示例的專案位置如下,特別注意的是都得以管理者身份執行,以防執行失敗

接著輸入如下的指令

SonarQube.Scanner.MSBuild.exe begin /k:"org.sonarqube:sonarqube-scanner-msbuild" /n:"你想設定的名稱" /v:"1.0"

接著是如下指令

"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"

最後再輸入

SonarQube.Scanner.MSBuild.exe end

成功之後我們訪問localhost:9000,應該可以看到有相對應的專案

接著點一下專案名稱,就可以直接進去看明細

如果我們想要刪除這個項目或管理的話,我們就必須要登入,而預設的登入帳號和密碼都是admin,登入後就自由發揮囉。

使用jenkins來執行SonarQube

之前的方式雖然很方便的讓我們可以在本機使用,但如果我們想要讓member一起去觀看所有的程式碼壞味道,那還是得使用ci的方式來實做,SonarQube其實有支援蠻多種ci的,而這篇當然就是以筆者最近研究的jenkins來做示例囉,首先一樣到管理jenkins的頁面,並下載SonarQube Scanner

接著再到設定系統的地方,SonarQube servers的地方,Add SonarQube,然後自行輸入一個name,因為我是在本機示例,所以就用預設的沒輸入了

接著到Global Tool Configuration去做設定,新增底下兩個設並全加上Name的名稱,而Install的部份,我就照預設的自動去github抓

接著到組態的部份做設定,在新增建置步驟的部份,照著圖示的數字,照順序的建立

注意1的地方,請為Project key和Project Name輸入名稱,2的地方則輸入如下指令

"C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe" /t:Rebuild

完成之後再建置一下專案,成功之後應該可以看到在成功圖示的右邊可以點選

點選下去之後就可以直接到相關專案的地方,直接看報告結果了

結論

透過SonarQube的報告,我們更好的了解整個專案的狀況,包括重覆的程式碼和安全漏洞等等的狀況,但是其實本篇也只不過是入門,因為SonarQube可以設定的地方非常多,包括規則設定等等的,如果筆者之後有深入研究,再找時間分享囉,如果有任何錯誤的地方,也再請各位大神指導囉。