iT邦幫忙

DAY 16
3

使用Jenkins打造.Net CI Server系列 第 16

CI Server 16 - 整合程式碼複雜度及深度報表 (Source Monitor)

我們已經學會了如何透過Source Monitor來掃描程式碼,分析程式碼的狀況,
今天將向大家介紹如何把這項工作整合進Jenkins之中,
讓每日建置也能同時產生當天程式碼最新的複雜度分析報告。
※準備Source Monitor掃描參數設定檔
在前一篇文章中,我們是使用GUI的介面來操作Source Monitor,
所以我們可以一步一步地透過畫面來選擇掃描設定值,
但若要整合進Jenkins之中,我們必須先準備好Source Monitor的設定檔,
關於設定檔的說明可以參考"C:\Program Files (x86)\SourceMonitor\Samples\sample_commands.xml"

<?xml version="1.0" encoding="UTF-8" ?><br></br>
<sourcemonitor_commands><br></br>
	<write_log>false</write_log><br></br>
	<command><br></br>
		<!--產生的SourceMonitor專案名稱--><br></br>
		<project_file>SourceMonitorReport.smp</project_file><br></br>
		<!--程式碼語言類型--><br></br>
		<project_language>C#</project_language><br></br>
		<!--掃描的副檔名規則--><br></br>
		<file_extensions>*.cs|*.Designer.cs</file_extensions><br></br>
		<!--起始資料夾--><br></br>
		<source_directory>.\</source_directory><br></br>
		<!--是否包含子資料夾--><br></br>
		<include_subdirectories>true</include_subdirectories><br></br>
		<!--檢查點名稱--><br></br>
		<checkpoint_name>Checkpoint 1</checkpoint_name><br></br>
		<!--是否解析utf8檔案--><br></br>
		<parse_utf8_files>true</parse_utf8_files><br></br>
		<export><br></br>
			<!--輸出的結果黨名稱--><br></br>
			<export_file>SourceMonitorReport.xml</export_file><br></br>
			<!--"1" for the project summary as XML,<br></br>
				"2" for checkpoint details as XML, <br></br>
				"3" project details as CSV.--><br></br>
			<export_type>2</export_type><br></br>
			<export_option>1</export_option><br></br>
		</export><br></br>
	</command><br></br>
</sourcemonitor_commands>

(請去除掉上面xml中的<br />,顯示界面的問題)
我們將以上設定儲存在"C:\CI_Tools\SourceMonitorCommand.xml"

※準備Source Monitor結果xsl轉換檔
Jenkins本身其實是沒有Source Monitor的PlugIn來顯示報表的,
因為我們選擇了一個折衷的方案,將掃描結果轉換為Html檔案,
並且透過HTML Publisher Plugin來顯示在Jenkins的專案畫面上,
Source Monitor產生的檔案為Xml檔案,因此我們需要透過寫好的xsl檔案來進行轉換的動作,
請先下載SourceMonitor.xslSourceMonitorSummaryGeneration.xsl並存放在C:\CI_Tools\下

※安裝HTML Publisher Plugin

  1. 進入Jenkins首頁後,點選左邊的管理Jenkins,再選擇管理外掛程式
  2. 點選可用的,勾選HTML Publisher PlugIn,選擇安裝並重啟

※設定專案
(我們必須先注意Source Monitor的允許掃描編碼UTF-8檔案是打開的)

  1. Jenkins專案首頁,進入設定畫面

  2. 找到Build區段,新增執行window batch command

  3. 輸入以下指令,用SourceMonitor來掃瞄我們的程式碼

    "C:\Program Files (x86)\SourceMonitor\SourceMonitor.exe" /C "C:\CI_Tools\SourceMonitorCommand.xml"
    "C:\CI_Tools\msxsl.exe" SourceMonitorReport.xml "C:\CI_Tools\SourceMonitorSummaryGeneration.xsl" -o SourceMonitorSummaryGeneration.xml
    "C:\CI_Tools\msxsl.exe" SourceMonitorSummaryGeneration.xml "C:\CI_Tools\SourceMonitor.xsl" -o SourceMonitorResult.html

Step 1. 使用Source Monitor掃描
Step 2. REM 轉換Source Monitor統計結果
Step 3. 產生Report Html檔

4. add post build action,新增Publish Html Report

5. 新增一筆Report,並輸入Html位置,選擇保留每次的檔案

6. 回到首頁重新執行並建置專案,可以看到出現Report連結

7. 點擊後可以看到專案的程式碼複雜度狀況

※總結
Jenkins本身提供了許多十分好用的PlugIn,但有時候也會有沒有實作的PlugIn,
這時候我們可以透過一些小技巧來將它整合到我們的每日建置報表之中,
例如今天介紹的Source Monitor,我們可以轉換其結果Xml檔案為Html,
再透過Html Publisher PlugIn來顯示在建置頁面上,
在最近幾篇的介紹中,我們已經整合了幾個比較常用的靜態程式碼分析工具,
讓我們每個專案的健康狀況一目了然,也方便管理者監控程式碼的品質,
對開發者而言,不需要在開發機上裝一大堆掃描工具,
只要每天檢查報表就能知道專案狀況,其實是非常方便的!
關於今天的內容,歡迎大家提出問題一起討論!


上一篇
CI Server 15 - 分析程式碼複雜度 (Source Monitor)
下一篇
CI Server 17 - 使用MsBuild整合常用工作
系列文
使用Jenkins打造.Net CI Server30

1 則留言

我要留言

立即登入留言