集成TFS Build生成與SonarQube獲取代碼分析結果


軟件項目在開發過程中,往往由於任務重、時間緊等原因忽略軟件代碼的質量和規范檢查,只注重軟件功能的開發和交付。等軟件交付上線以后,由於代碼質量導致的問題會耗費開發和運維人員的大量時間。研發表明,項目上線以后在生產環境中修復一個Bug,將耗費三倍於開發過程中修復該Bug所耗費的時間。由此可見,需要在開發過程中不斷提高代碼質量,避免潛在的問題,減少項目交付以后的技術負債。

在軟件開發過程中檢測代碼質量,持續集成構建無疑是最好的選擇。本文建介紹如何利用TFS的持續構建與代碼質量分析工具SonarQube之間的集成,實現實時分析代碼質量,幫助開發人員在開發過程中提高代碼質量。

一、必備工具

本文中作者使用了下列軟件產品:

- Microsoft Visual Studio Team Foundation Server 2015.1 https://www.visualstudio.com/en-us/products/tfs-overview-vs.aspx 

- SonarQube 5.3 http://www.sonarqube.org/downloads/ 

- SonarQube Scanner for MSBuild 2.0 http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+MSBuild 

- SonarQube C# Plugin http://docs.sonarqube.org/display/PLUG/C%23+Plugin 

二、安裝SonarQube

這里介紹如何在Windows Server 2012上,使用SQl Server 2014數據庫安裝和配置SnoarQube服務器。如果你已經擁有了一個SonarQube服務器,則可以忽略這一章節。

至於Team Foundation Server的安裝,過程比較復雜,並不是本文關注的重點,你可以參考微軟的官方文檔https://msdn.microsoft.com/en-us/Library/vs/alm/TFS/setup/overview 安裝和配置TFS服務器。

下載和安裝Java JDK

SonarQube是一個基於Java的應用服務器,需要首先在服務器上下載和配置JDK http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 

安裝運行JDK以后,還需要做下面的幾項配置:

- 添加服務器環境變量JAVA_HOME, 內容為Java的安裝目錄。例如我這里的安裝目錄為C:\Java\jdk1.8.0_11

- 在服務器環境變量Path中添加Java bin的目錄,例如C:\Java\jdk1.8.0_11\bin

下載SonarQube安裝程序

SonarQube是一個開源程序,可以從官網下載http://www.sonarqube.org/downloads/  我這里下載的是目前的最新版本5.3。
下載以后建軟件解壓縮到服務器的本地文件夾中,例如我這里解壓縮的目錄為C:\sonarqube-5.3。然后按照下面的步驟配置SonarQube服務器:

1. 在SQL Server數據庫中創建一個空的名稱為sonar數據庫,用於存儲SonarQube的數據。

2. 在SQL Server數據庫中創建一個SQL Server賬戶sonar,密碼sonar,並將該賬戶賦予上述數據庫的dbowner權限,用於SonarQube服務器讀取數據。

3. 修改SonarQube服務器的配置文件

修改配置文件:C:\sonarqube-5.3\conf\sonar.properties

刪除下面的代碼行注釋標志#,並填寫訪問數據庫的賬戶和密碼,

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

刪除下面的代碼行注釋標志#

sonar.jdbc.url=jdbc:sqlserver://tfsdb;databaseName=sonar

配置C Sharp插件

下載SonarQube C# Plugin http://docs.sonarqube.org/display/PLUG/C%23+Plugin ,並將其復制到SonarQube的插件目錄下:C:\sonarqube-5.3\extensions\plugins

注意,在SonarQube服務器啟動以后,這個目錄會自動生成其他默認的插件文件,例如Java, Git, SVN等插件。

啟動SonarQube服務器

可以通過命令行的方式啟動SonarQube服務器,也可以將SonarQube服務器配置成服務的方式,讓其跟隨服務器自動啟動。這里介紹命令方式啟動SonarQube服務器。

以管理員身份運行Windows命令行窗口,並導航到SonarQube服務器的啟動目錄:C:\sonarqube-5.3\bin\windows-x86-64\

運行啟動命令StartSonar.bat后,如果配置正確,你會看到下面的窗口。

image

Figure - 啟動SonarQube

此時打開瀏覽器,在地址欄中輸入SonarQube的默認網站地址http://SonarServer:9000 ,你會看到下面的窗口

image

Figure – SonarQube默認首頁

使用系統的默認管理員賬戶admin/admin登錄系統,就可以完成管理員的任何工作了。

三、安裝和配置TFS生成服務器

配置vNext生成服務器

可以通過TFS的XAML生成或者vNext生成,實現SonarQube的的代碼分析。由於XAML是一種趨於淘汰的生成技術,這個示例中我們使用TFS最新的vNext配置SonarQube。首先需要按照下面的方法配置一台vNext生成服務器:

SNAGHTMLc94c49

Figure - 下載生成服務器配置程序

image

Figure - 以管理員身份運行配置程序ConfigureAgent.cmd,后面的截圖略

配置SonarQube Scanner Runner for MSBuild

下載SonarQube Scanner for MSBuild 2.0 http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+MSBuild,並執行下面的操作:

1. 將文件解壓縮到這個目錄C:\sonarqube-5.3\bin

2. 在環境變量的Path中添加這個路徑:C:\sonarqube-5.3\bin, 確保在任意位置可以運行msbuild.sonarqube.runner.exe(如下圖)

image

3. 修改配置文件C:\sonarqube-5.3\bin\SonarQube.Analysis.xml

修改Runner的XML配置文件,填寫訪問SonarQube的賬戶和密碼

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

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

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

四、配置生成定義

為TFS的團隊項目添加服務連接

image

Figure - 為團隊項目添加Generic連接

image

Figure - 填寫SonarQube服務器的連接信息

在SornarQube中創建一個項目,映射TFS中的生成

安裝SonarQube的官方文檔,需要在TFS生成定義中需要使用這里創建項目使用的項目名稱密鑰,以便生成任務將分析結果上傳到SonarQube對應的項目中。

但是在實際操作中發現,這一步是可以忽略的,TFS的生成任務會在SonarQube中自動創建對應的項目。

image

Figure – 在SonarQube中創建項目

在生成定義中添加SonarQube for MSBuild任務

注意任務的排列順序,將Begin Analysis任務放在編譯之前,將End Analysis任務放在測試之后。

image

Figure - 在生成任務中配置SonarQube的分析任務

運行生成,查詢SonarQube分析結果

配置好生成定義以后,啟動生成,可以看到MSBuild的生成任務已經將代碼的分析結果發送到了SonarQube服務器上。

image

Figure - 生成運行結果

image

Figure – C#項目代碼的分析結果

至此,配置過程結束。

http://www.cnblogs.com/danzhang/  ALM MVP 張洪君


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM