在軟體開發時,我們很難在一開始就知道哪些程式碼是會被重複使用的,
通常都會先將各自的邏輯放在各自的Class裡面,
等到某一天發現同一份邏輯出現在很多地方時才會被抽為獨立的Class,
而Simian這套工具可以幫助我們掃瞄出程式碼重複性質高的區塊,
作為我們重構的標準,也可以提早讓我們知道那些地方大量被重複使用,
應該要抽成共用的Class,提升可重用性,降低更改共用邏輯時的成本。
※Simian簡介
Simian可使用在許多語言上,例如Java, C#, C, C++, COBOL, Ruby, JSP,
ASP, HTML, XML, Visual Basic, Groovy等等,
甚至可以使用在純文字檔案像是ini,
當我們在開發企業級的應用時,我們很難追蹤管理所有的程式碼,
Simian可以幫助我們做到這件事情,透過他來找出應該被改善的程式碼區塊。
※安裝Simian
Simian擁有.Net和Java的版本,可以依照需求來選擇,
使用之前需要參考它的授權說明並下載檔案,
(Simian商用是要收費的,非商用與教育則可以試用)
執行的程式在bin目錄下,我們解壓縮到想要存放的目錄即可。
※使用Simian找出相似度高的程式碼
我們可以在CommandLine執行以下指令,來掃描我們的專案,
"C:\Tools\Simian\simian-2.3.33.exe"
-formatter=xml:SimianReport.xml
-threshold=20
-language=cs
-excludes=**/*Test.cs
"C:\GitHubProject\CI-Sample\**/*.cs"
Simian的CommandLine語法格式為simian.exe [options] [files]
-formatter 代表輸出Xml格式的結果,並儲存為SimianReport.xml
-threshold 代表超過20行重複才會被偵測
-language 代表程式的語言為C#
-excludes 代表要排除偵測的檔案類型 (這邊排除了單元測的檔案)
最後一個指令為要掃描的範圍
Simian的CommandLine指令可以參考官網說明
我們從畫面上看到沒有找到重複的程式碼,
同時在專案資料夾也產生了一個Xml的結果檔,
※總結
透過Simian的掃瞄,我們可以及早發現重複性質高的程式碼並重構,
也讓程式碼的開發越來越物件導向,可重用性也增加,
在接下來的文章我將介紹如何將Simian整合到每日建置中,
讓我們可以透過Jenkins來瀏覽我們的Simian報表,
關於今天的內容,若有任何問題歡迎提出來一起討論。