軟件項目在開發過程中,往往由於任務重、時間緊等原因忽略軟件代碼的質量和規范檢查,只注重軟件功能的開發和交付。等軟件交付上線以后,由於代碼質量導致的問題會耗費開發和運維人員的大量時間。研發表明,項目上線以后在生產環境中修復一個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后,如果配置正確,你會看到下面的窗口。
Figure - 啟動SonarQube
此時打開瀏覽器,在地址欄中輸入SonarQube的默認網站地址http://SonarServer:9000 ,你會看到下面的窗口
Figure – SonarQube默認首頁
使用系統的默認管理員賬戶admin/admin登錄系統,就可以完成管理員的任何工作了。
三、安裝和配置TFS生成服務器
配置vNext生成服務器
可以通過TFS的XAML生成或者vNext生成,實現SonarQube的的代碼分析。由於XAML是一種趨於淘汰的生成技術,這個示例中我們使用TFS最新的vNext配置SonarQube。首先需要按照下面的方法配置一台vNext生成服務器:
Figure - 下載生成服務器配置程序
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(如下圖)
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的團隊項目添加服務連接
Figure - 為團隊項目添加Generic連接
Figure - 填寫SonarQube服務器的連接信息
在SornarQube中創建一個項目,映射TFS中的生成
安裝SonarQube的官方文檔,需要在TFS生成定義中需要使用這里創建項目使用的項目名稱和密鑰,以便生成任務將分析結果上傳到SonarQube對應的項目中。
但是在實際操作中發現,這一步是可以忽略的,TFS的生成任務會在SonarQube中自動創建對應的項目。
Figure – 在SonarQube中創建項目
在生成定義中添加SonarQube for MSBuild任務
注意任務的排列順序,將Begin Analysis任務放在編譯之前,將End Analysis任務放在測試之后。
Figure - 在生成任務中配置SonarQube的分析任務
運行生成,查詢SonarQube分析結果
配置好生成定義以后,啟動生成,可以看到MSBuild的生成任務已經將代碼的分析結果發送到了SonarQube服務器上。
Figure - 生成運行結果
Figure – C#項目代碼的分析結果
至此,配置過程結束。
http://www.cnblogs.com/danzhang/ ALM MVP 張洪君