Visual Studio 的 Code Clone 重複程式碼分析工具

最近的工作是針對一個大型既有專案做程式碼品質改善,當時接到這個任務時,對於這個專案我心裡大概就有幾個想法:

  1. 重要性高
  2. 複雜度很高
  3. 可維護性低
  4. 可測試性低
  5. 功能及需求文件不全
  6. user 不一定清楚所有功能用途

照這個概念去發想,也能得出專案由來已久,經手人數眾多,coding style 不一致的現象,很多人都想要打掉重練,無奈成本太高,很難有這麼資源可以重寫一套,所以便退而求其次地進行重構及品質改善計劃

在實際對程式碼進行重構前,一定要先了解對手的實力XD,在之前文章 Visual Studio 2017 如何使用 Code Map 功能 有粗略提到 Code Map 可以幫助我們快速了解專案的關聯性以及實際執行流程。針對程式碼品質,今天就看看 Visual Studio 的另個工具:Code Clone 重複程式碼分析工具,透過 Code Clone 的分析,我們可以快速取得專案內複製貼上的程式碼位置與數量

需要留意的是 Code Clone 功能僅在 Visual Studio Premium 以上版本才有

分析專案重複程式碼

  • Visual Studio 主選單 Analyze –> Analyze Solution for Code Clones

    1analyze

  • 分析結果

    2result

    • Clone Group
    • Match Type

      > 依程式碼相似程度分為以下四種 match 類型
      
      • Exact Match
      • Strong Match
      • Medium Match
      • Weak Match
    • Files

      > 重複程式碼出現的檔案數量
      
    • Clone Count

      程式碼重複次數

  • 快顯效果

    滑鼠移至檔案名稱上,會出現重複程式碼的快顯視窗

    3hover

  • 比較檔案

    可以在分析結果視窗中選取多個檔案進行重複程式區塊比對

    • shift+滑鼠左鍵(多選檔案)-->滑鼠右鍵--> Compare

      4compare

      5compareresult

針對特定程式碼尋找是否重複

  • 選取特定程式碼–>滑鼠右鍵–> Find Matching Clones in Solution

    6findclones

  • 尋找結果

    7findresult

Visual Studio 2017 如何使用 Code Clone 功能

加入方法與 Visual Studio 2017 如何使用 Code Map 功能 所提方式一致,vs 2017 為了提升安裝速度,將多數工具改列可選擇性的安裝項目,Code Clone 便是其一

  1. 重新執行 Visual Studio 2017 安裝檔 –> Modify

    1update

  2. Individual components –> Code tools –> 勾選 Code Clone –> Modify

    8vs2017

其他更多功能

  • 如何排除特定檔案
  • 關於 code clone 的搜尋標準

請參考 Visual Studio 2012 New Features: Code Clone Analysis

參考資訊

  1. Visual Studio 2012 New Features: Code Clone Analysis
  2. Visual Studio 2017 如何使用 Code Map 功能