内容简介:SonarQube 已經內建 SonarC#,可以直接對 C# 進行檢查,本文將以 .NET Core 為例,並搭配 Jenkins 自動執行 SonarQube。macOS High Sierra 10.13.4SonarQube 7.1
SonarQube 已經內建 SonarC#,可以直接對 C# 進行檢查,本文將以 .NET Core 為例,並搭配 Jenkins 自動執行 SonarQube。
Version
macOS High Sierra 10.13.4
SonarQube 7.1
Jenkins 2.107.1
.NET Core 2.0.7
GitHub
將 .NET Core 專案放到 GitHub。
- 本文將 .NET Core 專案放在
https://github.com/oomusou/Core2SonarQubeJenkins
當然也可以將 git repository 放在不同的 git server,如 Bitbucket
SonarQube
Installation
$ brew install sonarqube
使用 Homebrew 安裝 SonarQube。
brew services start sonarqube sonar console
Start SonarQube
$ sonar console
使用 sonar console
自行啟動 SonarQube。
Test SonarQube
輸入 localhost:9000
,若看到 SonarQube 首頁,則表示安裝成功
右上角 Log in
可登入管理設定 SonarQube,預設為 admin/admin
SonarQube Scanner for MSBuild
SonarQube 雖然已經包含 SonarC#,但必須靠 SonarQube Scanner for MSBuild 才能執行,預設 SonarQube 並沒有包含 Scanner,必須自行安裝。
其實 SonarQube Scanner for MSBuild 包含 SonarQube Scanner,只是為了 C# 要編譯的特性再包了一層
Download Scanner
- 到 Analyzing with SonarQube Scanner for MSBuild 下載 Scanner,選擇
Download for .NET core 2.0
下載。
下載後為一 zip
壓縮檔,解壓縮後可安裝在任何目錄。
將 zip
解開後,放到 home directory 下,並重新命名為 SonarScannerMsbuild
。
重新命名只為了縮短目錄名稱而已
Configuration
SonarQube.Analysis.xml
<Property Name="sonar.host.url">http://localhost:9000</Property> <Property Name="sonar.login">admin</Property> <Property Name="sonar.password">admin</Property>
編輯 ~/SonarScannerMsbuild/SonarQube.Analysis.xml
,修改 sonar.host.url
、 sonar.login
與 sonar.password
三個 property。
SonarQube.Analysis.xml
Test Scanner
$ dotnet ~/SonarScannerMsbuild/SonarScanner.MSBuild.dll begin /k:core2 /n:Core2 /v:1.0
使用 SonarQube Scanner for MSBuild 對 .NET Core 專案進行檢查。
由於 .NET Core 是跨平台, SonarScanner.MSBuild.dll
必須由 dotnet
執行。
-
SonarScanner.MSBuild.dll
需指定完整路徑,無法透過$PATH
設定 - 需加上
begin
,dotnet build
必須包在 scanner 內 - /k :SonarQube 對專案的 key,內部將以此 key 作為辨別,必須唯一
- /n :在 SonarQube 網頁上顯示的專案名稱
- /v :在 SonarQube 網頁上顯示的版本編號
- 在專案目錄下使用
SonarScanner.MSBuild.dll
檢查 C#
$ dotnet build
使用 dotnet build
編譯專案。
Script 類不用編譯,可以直接使用 SonarQube Scanner 就可以檢查,但 C# 需要編譯,因此必須 dotnet build
dotnet build
$ dotnet ~/SonarScannerMsbuild/SonarScanner.MSBuild.dll end
- 需加上
end
,scanner 正式將dotnet build
檢查出的結果寫入 SonarQube project
- 在專案目錄下使用
SonarScanner.MSBuild.dll
結束檢查
進入 SonarQube 網頁,就可看到 Core2
專案已經出現 SonarQube,也顯示剛剛 dotnet build
檢查出的 1
個 code smell 警告。
到目前為止,SonarQube 對 C# 的檢查已經完成,就算只將 SonarQube 裝在本機,也對 C# 程式碼品質的檢查有很大的幫助。
若能搭配 Jenkins 自動執行 SonarQube,那就更好了。
Jenkins
Installation
$ brew install jenkins
使用 Homebrew 安裝 Jenkins。
-
若想在每次 Mac 重開機就自動執行 Jenkins,輸入
brew services start jenkins
-
若想自行啟動 Jenkins,輸入
jenkins
啟動 Jenkins
$ jenkins
使用 jenkins
自行啟動 Jenkins。
Unlock Jenkins
localhost:8080 ~/jenkins/secrets/initialAdminPassword Continue
Customize Jenkins
- 選擇
Install suggested plugins
即可
Getting Started
安裝 suggested plugin 中。
Create Admin User
Save and Finish
Jenkins is Ready
- Jenkins 安裝完成,按
Start using jenkins
開始使用 Jenkins
Welcome to Jenkins
- 進入 Jenkins 管理介面,如此 Jenkins 已經設定成功
Jenkins Job
Create Job
- 按左側
New Item
建立新 job
Freestyle project OK
Source Code Management
- 找到
Source Code Management
區段 - 將 Git 的
Repository URL
設定到https://github.com/oomusou/Core2SonarQubeJenkins
Build Environment
Build Environment Delete workspace before build starts
Build
Build Add build step Execute shell
- 講以下 command 貼上
dotnet /Users/oomusou/SonarScannerMsbuild/SonarScanner.MSBuild.dll begin /k:core2 /n:Core2 /v:1.0 dotnet build dotnet /Users/oomusou/SonarScannerMsbuild/SonarScanner.MSBuild.dll end
- 按
Save
儲存設定
- 按左側
Build Now
執行 Job
- Job 執行成功會出現
藍燈
剛剛 Jenkins 執行的 Project 出現在 SonarQube 上。
Conclusion
- SonarQube 已經內建 SonarC#,也可以用來檢查 C# 與 .NET Core
- 就算不將 SonarQube 安裝在 server,安裝在本機也能有效的檢查 C# 程式碼品質
- 藉由 Jenkins 幫忙,我們就可以自動化執行 SonarQube
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Intersectional Internet
Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016
From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!