CodeReview工具 SonarQube

有時候CodeReview沒有一個固定方式,造成各自有各自的判斷,再加上經驗不足,有些安全性問題也沒有辦法注意到
這時工具,可以輔助,這樣不是一舉數得

所以本次要來介紹一下SonarQube

本次採用工具

  • Jenkins
  • SonarQube
  • Visual Studio 2022

項目一
SonarQube

建立global權限的Token

建置專案(如果沒有預先建置,使用golbal權限的Token會自動建置)
因為是免費版所以branch只能選擇一個,記得Project key這個有作用


項目二
Jenkins

插件安裝SonarQube(注意插件要配合最新版Jenkins使用且建議要使用Java 17以上)
Jenkins如果太舊,安裝插件會造成錯誤無法使用,圖片上有說可能無法使用,真的就踩雷


環境參數設定
Token記得要設定為global(再補更新)

SonarQube的URL與使用的Token

因為donet有Framewrokr以及Net版(含Net Core)
所以還要再安裝SonarScanner For Msbuid Fwk4.6


提醒有新版SonarScanner For .Net Framewrokr、SonarScanner For .Net(建議使用最新版)

Pipeline設定
SonarScanner For .Net Framewrokr 請使用此指令

stage('SonarQube Analysis') {
   steps {
       script{
           def scannerHome = tool 'ScannerMSBuildFwk' //Jenkins內設定的工具名稱
           ws("D:/${BRANCH}/${SOURCE_PROJECT}/") {
               withSonarQubeEnv('SonarQube') {  //環境參數設定SonarQube站台
                   bat "\"${scannerHome}\\SonarScanner.MSBuild.exe\" begin /k:\"${SOURCE_PROJECT}\"" //projectKey使用處
    bat "\"${tool name: 'MsBuild v17_2', type: 'msbuild'}\" /t:Rebuild ${SOURCE_PROJECT}/${SOURCE_PROJECT}.csproj" //專案名稱或者使用.sln
                   bat "\"${scannerHome}\\SonarScanner.MSBuild.exe\" end"
               }
           }
       }
   }
}

SonarScanner For .Net 請使用此指令

stage('SonarQube Analysis') {
   steps {
       script{
           def scannerHome = tool 'ScannerMSBuildNet' //Jenkins內設定的工具名稱
           ws("D:/${BRANCH}/${SOURCE_PROJECT}/") {
               withSonarQubeEnv('SonarQube') { //環境參數設定SonarQube站台
                   bat "donet ${scannerHome}\\SonarScanner.MSBuild.dll" begin /k:\"${SOURCE_PROJECT}\"" //projectKey使用處
    bat "\"${tool name: 'MsBuild v17_2', type: 'msbuild'}\" /t:Rebuild ${SOURCE_PROJECT}/${SOURCE_PROJECT}.csproj" //專案名稱或者使用.sln
                   bat "dobet ${scannerHome}\\SonarScanner.MSBuild.dll" end"
               }
           }
       }
   }
}

站台上也會有一些基礎說明教學

建置完成後就可以在SonarQube看到程式碼掃描後的結果

最後總結一下
這是一個輔助性使用的工具,有一些大眾的規範,可以供參考,但不是絕對性
畢竟工具有些建議,使用者看到也會覺得詭異或是無法理解,所以當成輔助性質即可


官網步驟