The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

介紹好用工具:FxCop ( 靜態程式碼分析 )

FxCop 是一種靜態程式碼分析工具,主要是用來分析採用 .NET 技術開發的組件(Assembly)品質,其中分析的規則也多達上百條(FxCop 1.36 預設有 197 種規則),並依照不同的領域分門別類,大致有以下類別:

  • 設計警告 ( Design Rules )
    支援 .NET Framework 設計方針所指定之正確程式庫設計的警告。
  • 全球化警告 ( Globalization )
    支援世界性程式庫和應用程式的警告。
  • 互通性警告 ( Interoperability )
    支援與 COM 用戶端互動的警告。
  • 維護性警告 ( Maintainability )
    維護性警告支援程式庫和應用程式維護。
  • 命名警告 ( Naming )
    支援遵守 .NET Framework 設計方針之命名慣例的警告。
  • 效能警告 ( Performance )
    支援高效能程式庫和應用程式的警告。
  • 可攜性警告 ( Portability )
    可攜性警告會支援各種不同平台的可攜性。
  • 可靠性警告 ( Reliability )
    支援程式庫和應用程式可靠性的警告,如正確的記憶體和執行緒用法。
  • 安全性警告 ( Security )
    支援更安全之程式庫和應用程式的警告。
  • 用法警告 ( Usage )
    支援適當使用 .NET Framework 的警告。

[ 以上資訊摘自 MSDN Managed 程式碼的程式碼分析警告 單元 ]

這些檢查規則(Rules)都是微軟在開發 .NET Class Library 時提出的各種程式設計的規範與警告,讓工程師們能夠寫出好用且易於維護的程式碼,FxCop 原意是要提供給開發類別庫(Class Library)的開發人員用的,只不過若一般的 .Net 應用程式也能夠遵照這些 Rules 開發的話,想必也能夠獲益良多,我覺得任何 .NET 工程師應該都要試試 FxCop 工具。

若要使用 FxCop 有幾個基本的步驟,如下:

1. 新增專案

Microsoft FxCop - New Project

2. 新增檢查目標,並選擇一個至多個 .NET 組件

Microsoft FxCop - Add Targets

3. 選擇要檢查的規則:在 FxCop 中雖然 Rules 這麼多,但如果全部都套用的話也其實不太實際,你可以選擇部分檢查規則就好,只要切換到 Rules 頁籤後,勾選你想要檢查的類別或特定項目即可。

Microsoft FxCop - Rules Tab

4. 按下 Analyze 按鈕進行程式碼檢查

Microsoft FxCop - Targets - Begin Analysis

5. 最後就是查看報表了,你可以在右側的檢查項目上選取 Properties 查看警告的詳細

Microsoft FxCop - Report

而在 Message Details 視窗裡有許多資訊可以查看,如下圖 Issues 頁籤可看到 Resolution (解決方式)

Microsoft FxCop - Message Details - Issues

Rule Details 提供了更詳細的說明

Microsoft FxCop - Message Details - Rule Details

Message 頁籤提供該條警告偵測到的方法(Method)

 Microsoft FxCop - Message Details - Message

Rules Support 頁籤提供了該條規則所提供支援訊息,其中 URL 的連結會連到 MSDN 看到該規則詳細的說明,而且是中文的喔!

Microsoft FxCop - Message Details - Rule Support

而最後的 Notes 可以讓 Code Review 的人員填入自己的筆記備查

Microsoft FxCop - Message Details - Notes

其他的部分就讓各位自己去發掘啦!

目前最新的 FxCop 是在 2008/8/13 發佈的 1.36 正式版,除此之外 FxCop 工具也早已整合進 Visual Studio Team System 產品中,在這次的 Visual Studio 2008 SP1 更新中也包括 FxCop 1.36 的更新。

備註:如果你之前已經安裝了FxCop 1.36 Beta 2,在安裝FxCop 1.36之前需要先解除安裝 Beta 2 才能安裝正式版。

相關連結