1. 程式人生 > >.net持續整合sonarqube篇之sonarqube安裝與基本配置

.net持續整合sonarqube篇之sonarqube安裝與基本配置

系列目錄

Sonarqube下載與安裝

Sonarqube下載地址是:https://www.sonarqube.org/downloads/下載版本有兩個,一個是長期支援版,另一個是最新版,此處安裝的是最新版,目前版本是7.3,下載的時候點選醒目的藍色按鈕即可(此時下載的是社群版),下面有三個無底色按鈕下載連結,分別對應的是開發者版,企業版和資料中心版,這些版本都不是免費版,需要獲取Licence key方可使用.目前起步階段,使用社群版就Ok了.

注意 Sonarqube是基於java語言開發的,因此執行之前必須先安裝Jre

Sonarqube支援Windows,mac和linux,但是安裝包並不區分平臺,也就是這三個平臺下載包是一樣的,只是啟動方式不同.

下載完成全將下載的壓縮包解壓,進入bin目錄,可以看到這個目錄下有數個資料夾,從資料夾的名稱很容易看出它們對應的是windows,mac,linux平臺下的啟動目錄,由於我們是在windows平臺下執行的,因此進入windows-x86-64目錄(當然,如果你的電腦是32位系統,則進入windows-x86-32目錄)此目錄下面有很多指令碼檔案,我們雙擊StartSonar.bat這個批處理檔案來執行windows下的sonarqube,啟動需要數十秒時間,請耐心等等.當看到控制檯最後一句是SonarQube is up說明sonarqube已經成功啟動.此時在瀏覽器位址列輸入localhost:9000

就可以進入Sonarqube web管理頁面.

這個頁面是一個關於Sonarqube的介紹頁面,從這裡可以很清析地看到Sonarqube支援的語言,點選Read Documentation按鈕可以進入Sonarqube的幫助文件頁面.

Sonarqube基本配置

上一節我們已經成功啟動Sonarqube,然而僅僅把Sonarqube啟動起來並沒有什麼作用,我們還需要進行資料庫配置和掃描器(Sonarqube對特定語言的掃描工具稱為掃描器)配置才能把資料接入Sonarqube管理平臺.

資料庫配置

Sonarqube支援內嵌資料庫,mysql,oracle 11g/12c,sql server 2014/2016,postgresql 9.3+,由於oracle需要提供單獨的驅動比較麻煩,這裡就以mysql為例講解.

我們進入Sonarqube目錄下的conf目錄,下面有一個sonar.properties檔案,我們用記錄本開啟它,我們進入mysql欄把sonar.jdbc.url註釋取消掉,並加上以下程式碼

sonar.jdbc.username=root
sonar.jdbc.password=
sonar.sorceEncoding=UTF-8
sonar.login=root
sonar.password=

Sonarqube預設的資料庫名為sonar,需要我們手動建立,我們在自己常用的mysql管理工具裡新建即可.

以上是關於sonarqube mysql連線字串的配置.使用者名稱和密碼讀者根據實際情況填寫

以上筆者使用的是Xampp帶的mysql的預設配置,使用者名稱為root,密碼為空,注意這裡的password不能寫為"",而是什麼都不寫留空,當然如果有密碼就填寫實際密碼.

Sonarqube 7.3僅支援mysql 5.6及以上8.0以下版本,也就是說不支援8.0版本,需要特別注意.

Sonarqube也支援內嵌資料庫,然而內嵌資料庫不便於管理和遷移,強烈不建議在生產環境使用內嵌資料庫.

我們重新啟動Sonarqube,然後進入web管理介面,此時我們開啟mysql管理工具,可以看到sonarqube在sonarqube庫下建立了很多表.

安裝配置Msbuild Scanner

上一節我們說過,Sonarqube需要使用Scanner來掃描程式碼資料以供Sonarqube管理平臺使用,這裡我們下載 msbuild scanner掃描工具對c#程式碼進行掃描.

我們把Sonarqube web管理介面往下拉到最底,會看到一拍圖示

我們點選第一個圖示,也就是Visual Studio圖示,會進入一個頁面


圖示部分為下載連結,我們選擇.net framework 4.6+

注意,這裡下載連結的名稱雖然是for .net framework 4.6+,實際上仍然支援.net 4.0及以上版本,並不是只支援.net 4.6以上版本.

下載完成後,我們把壓縮包解壓到一個目錄,並把目錄地址新增到系統環境變數裡.

同樣,為了方便使用,我們也需要把msbuild.exe新增到環境變數中,如果你的系統中安裝的visual Studio開發工具,則Visual studio中會自動包含一個msbuild.exe我們找到它的路徑新增到系統環境變數path中.

配置SonarQube.Analysis.xml檔案

由於Scanner要通過rest api方式向伺服器提交資料,這裡需要對Sonarqube web伺服器地址和使用者名稱進行配置才能正常提交資料,我們開啟剛解壓的目錄,找到SonarQube.Analysis.xml檔案,新增以下三行配置即可

<Property Name="sonar.host.url">http://localhost:9000</Property>

  <Property Name="sonar.login">admin</Property>
  <Property Name="sonar.password">admin</Property>

以上配置很容易理解,url為Sonarqube伺服器地址,下面為登陸名和密碼(Sonarqube預設帶一個管理員賬號,使用者名稱為admin密碼也是admin,後面我們會講在生產環境中如何更改admin密碼)

再次回到剛才的下載頁面,定位到usage欄,可以看到有一個簡短的示例程式碼如下

SonarScanner.MSBuild.exe begin /k:"project-key"
MSBuild.exe /t:Rebuild
SonarScanner.MSBuild.exe end

我們依照這段程式碼的結構,對本地的一個專案進行編譯(可以是任意c#專案),進入專案sln或者csproj所在的資料夾下依次執行以下程式碼

SonarScanner.MSBuild.exe begin /k:"mygetdata" /v:"1.0"
MSBuild.exe /t:Rebuild
SonarScanner.MSBuild.exe end

第二段是執行msbuild,第三段是一個結束標誌,沒有什麼需要詳細說明的,關於msbuild構建的詳細資訊可以檢視微軟官網,也可以參照本教程其它章節.這裡簡要介紹下第一段的/k和/v引數,/k為key的縮寫,Sonarqube每一個專案都要有一個惟一key,key的規則可以自己定,但是需要方便管理,/v為version,如果兩個構建的key相同,verison不同,Sonarqube會生成一個對比以便直觀看到兩次構建的差異,這樣方便管理員檢視問題的解決情況.

執行完以上命令後,我們再進入Sonarqube首頁,這時候我們點選Login按鈕登陸,只有登陸以後才可以看到與專案相關的內容,點選例如後用戶名為admin,密碼也是admin(前面說過Sonarqube預設會帶一個使用者名稱和密碼都是admin的賬戶,後面我們會講如何更改密碼以及如何為不同的開發者分配賬戶)

登陸以後,就會看到一個如下圖所示的介面

從圖中我們可以看到我們剛才建立的key 為mygetdata的構建了,從圖中可以簡要的看到此專案的嚴重bug,一般bug,程式碼不規範,程式碼單元測試覆蓋率,程式碼重複度,程式碼最後一次分析時間等.

我們點選mygetdata這個標題,便會進去關於這個構建任務的更為詳細資訊

可以看到資訊更為詳細,切換上面的導航欄可以看到關於某一個維度的更為詳細的資訊.

圖示中的數字大都是可以點選的連結,比如頁面中顯示bugs為10我們點選10這個數字可以進入這10個bug的程式碼詳情

相關推薦

.net持續整合cakecake介紹及簡單示例

cake介紹 Cake 是.net平臺下的一款自動化構建工具,可以完成對.net專案的編譯,打包,執行單元測試,整合測試甚至釋出專案等等.如果有些特徵Cake沒有實現,我們還可以很容易地通過擴充套件Cake來實現我們想要的功能. Cake有以下特點 1) 使用c#語言編寫,可以在Cake腳本里使用C#語言來實

.net持續整合cakecake任務依賴、自定義配置薦及環境變數讀取

系列目錄 新建一個構建任務及任務依賴關係設定 上節我們通過新建一個HelloWorld示例講解了如何編寫build.cake以及如何下載build.ps1啟動檔案以及如何執行.實際專案中,我們使用最多的是對專案進行編譯.本節我們講解如何建立一個編譯任務. 新增一個編譯任務 我們仍然使用上節使用的build

.net持續整合測試Nunit常見斷言

系列目錄 Nunit測試基礎之簡單斷言 在開始本篇之前需要補充一些內容,通過前面搭建Nunit測試環境我們知道要使一個方法成為單元測試方法首先要在此方法所在類加上TestFixture註解,並且在該方法上新增上Test註解. 然而還有一點需要注意:所有進行單元測試的方法必須標識為public訪問級別,否則

.net持續整合測試Nunit that斷言

系列目錄 that是Nunit的新語法,語義上不如簡單斷言,使用上也更加複雜,但是其功能更加強大. 其基本語法如下程式碼片段示: [Test] public void DemoTest() { bool b = 3 + 2 == 5;

.net持續整合測試Nunit引數化測試

系列目錄 在進行單元測試的時候,很多時候,很多時候我們都是在單元測試方法內部提供特定的值,但是這樣測試往往造成樣本數不足從而導致覆蓋的結果不夠全面,很多時候我們更想提供來自外部的,滿足條件的一組值來進行測試.其實Nunit框架本身提供了為測試用例提供值的能力.我們可以對它進行擴充套件來實現匯入外部的值來填

.net持續整合測試Nunit 測試配置

系列目錄 在開始之前我們先看一個陷阱 用到的Person類如下 public class Person:IPerson { public string Name { get; set; } public int Age { get; set; }

持續整合高階Jenkins cliJenkins ssh

系列目錄 Jenkins Cli介紹 Jenkins Cli為Jenkins提供的一個cli工具,此工具功能非常強大,可以完成諸如重啟jenkins,建立/刪除job,檢視job控制檯輸出,新增/刪除節點等功能.但是實際工作中,像建立任務這樣的配置顯然cli非常吃力,不如直接在web管理介面操作,但是對於

.net持續整合sonarqubesonarqube安裝基本配置

系列目錄 Sonarqube下載與安裝 Sonarqube下載地址是:https://www.sonarqube.org/downloads/下載版本有兩個,一個是長期支援版,另一個是最新版,此處安裝的是最新版,目前版本是7.3,下載的時候點選醒目的藍色按鈕即可(此時下載的是社群版),下面有三個無底色按鈕

.net持續整合sonarqubesonarqube基本操作(一)

系列目錄 Sonarqube Web管理介面雖然設計的簡潔大方,也非常直觀,但是由於功能繁多,這對快速入手以及快速定位到想要的功能都是一個挑戰,在以後的幾個小節裡我們簡要介紹. OwerView(概覽) 概覽介面主要展示了專案lint的統計資訊 可以看到這些欄目欄目大都是統計數字,並且帶有連結,點選連

.net持續整合sonarqubesonarqube基本操作(二)

系列目錄 Activity介面操作 Activity介面主要是對多次構建管理介面,主要是幫助管理員快速瞭解專案每次構建與以往構建相比問題是增加了還是減少了等指標.由於目前我們僅進行了一次構建,因此沒有對比資料,我們再對測試專案進行一次構建. 構建程式碼如下 SonarScanner.MSBuild.exe

.net持續整合sonarqube專案管理使用者管理

系列目錄 刪除專案 在學習階段,我們可能需要經常刪除已構建的專案,在sonarqube中想要刪除一個專案有兩個入口,都在Administration導航欄內. 在專案內部的管理介面刪除 如果專案處於開啟狀態,如下圖示 點選Administration會出現一個下拉選單,其中最後一項為Deletion,

.net持續整合sonarqube sonarqube整合單元測試

系列目錄 通過前面章節我們可以看到,不論怎麼構建,單元測試覆蓋率一欄總是0% 這是因為單元測試覆蓋率報告需要額外整合.這一節我們就講解如何在sonarqube裡整合單元測試覆蓋率報告. 這裡需要藉助Opencover來生成單元測試覆蓋報告文件,Opencover前面章節我們介紹過,不瞭解的朋友可以檢

.net持續整合sonarqube sonarqubejenkins整合(命令模式)

系列目錄 Sonarqube結合Jenkins與常見問題 我們引入sonarqube元件的最終目的是要為整個Ci環境服務的,如果不能集成於當前的Jenkins CI,那麼我們做的很多關於sonarqube的工作都將是徒勞的.然而這一點幾乎不用擔心,因為我們從前面的講解可以看到我們的構建操作都是通過命令列來

.net持續整合sonarqube sonarqubejenkins整合(外掛模式)

系列目錄 Jenkins通過外掛整合Sonarqube 通過上一節我們瞭解瞭如何配置以使jenkins ci環境中可以執行sonarqube構建,其實Sonarqube官方也提供了jenkins外掛以便更方便的管理.使用外掛來執行sonarqube專案有以下優點 1.可以很清楚的看到專案是Sonarqub

.netcore持續整合測試 .net core 2.1專案整合測試

系列目錄 從.net到.net core以後,微軟非常努力,以每年一到兩個大版本的頻率在演進.net core,去年相繼釋出了.net core 2.1和2.2,其中2.1是長期支援版,不斷的快速更新一方面快速彌補了相比.net framework缺失的api,同時也帶來了不少激進性的改變,導致很多api

.netcore持續整合測試開篇簡介及Xunit基本使用

系列目錄 為了支援跨平臺,微軟為.net平臺提供了.net core test sdk,這樣第三方測試框架諸如Nunit,Xunit等只需要按照sdk提供的api規範進行開發便可以被dotnet cli工具呼叫,這樣就解決了在持續整合過程中第三方框架依賴於windows平臺上的各自runner的問題,使得

.netcore持續整合測試Xunit資料驅動測試

>[系列目錄](https://www.cnblogs.com/tylerzhou/p/11204826.html) Nunit裡提供了豐富的資料測試功能,雖然Xunit裡提供的比較少,但是也能滿足很多場景下使用了,如果資料場景非常複雜,Nunit和Xunit都是無法勝任的,有不少測試者選擇自己編寫一個

.netcore持續整合測試搭建記憶體伺服器進行整合測試一

系列目錄 在web專案裡,我們把每一層的程式碼的單元測試都通過並不代表程式能正常執行,因為這個過程缺失了http管道,很多時候我們還還需要把專案布在iis環境中或者在vs裡啟動iis express伺服器進行整合測試.對於返回view的的方法我們通常是在瀏覽器中輸入地址進行測試,對於返回資料的方法則使用諸

.netcore持續整合測試Xunit結合netcore記憶體伺服器傳送post請求

系列目錄 .net core整合測試之Post請求 Web專案中,很多與使用者資料互動的請求都是Post請求,想必大家都用過HttpClient構造過post請求,這裡並不對HttpClient做詳細介紹,只介紹一些常用的功能.並結合AutoFixture演示如何自動構造請求資料,簡單手動建立Json或者

.netcore持續整合測試測試方法改造

系列目錄 通過前面兩節講解,我們的測試類中已經有兩個測試方法了,總體上如下 public class mvc20 { private readonly HttpClient _client; public mvc20() {