2017-04-12

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 功能

沒有留言:

張貼留言