共用方式為


逐步解說:分析 Managed 程式碼中的程式碼缺失

在這個逐步解說中,您會使用程式碼分析工具分析 Managed 專案,找出程式碼缺失。

這個逐步解說會引導您使用程式碼分析工具,分析 .NET Managed 程式碼組件 (Assembly),以便符合 .NET Framework 設計方針。

在本逐步解說中,您將會:

  • 分析並修正程式碼缺失警告。

必要條件

  • Visual Studio Premium.

建立類別庫

若要建立類別庫

  1. 在 Visual Studio 的 [檔案] 功能表上,按一下 [新增],然後按一下 [專案]。

  2. 在 [新增專案] 對話方塊的 [專案類型] 底下,按一下 [Visual C#]。

  3. 在 [範本] 底下,選取 [類別庫]。

  4. 在 [名稱] 文字方塊中,輸入 CodeAnalysisManagedDemo,然後按一下 [確定]。

  5. 建立專案後,開啟 Class1.cs 檔。

  6. 以下列程式碼取代 Class1.cs 中的現有文字:

    //CodeAnalysisManagedDemo
    //Class1.cs
    using System;
    namespace testCode
    {
        
        public class demo : Exception
        {
            
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
  7. 儲存 Class1.cs 檔。

分析專案

若要分析 Managed 專案並找出程式碼缺失

  1. 在 [方案總管] 中,選取 [CodeAnalysisManagedDemo] 專案。

  2. 在 [專案] 功能表上,按一下 [屬性]。

    CodeAnalysisManagedDemo 屬性頁隨即顯示。

  3. 按一下 [程式碼分析]。

  4. 選取 [建置時啟用程式碼分析 (定義 CODE_ANALYSIS 常數)]。

  5. 在 [執行此規則集] 下拉式清單中,選取 [Microsoft 所有規則]。

  6. 在 [檔案] 功能表上,按一下 [儲存選取項目],然後關閉 ManagedDemo 屬性頁。

  7. 在 [建置] 功能表上按一下 [建置 ManagedDemo]。

    CodeAnalysisManagedDemo 專案建置警告會回報在 [錯誤清單] 和 [輸出] 視窗中。

    如果 [程式碼分析] 視窗不會出現, [分析] 在功能表上,選擇 [Windows] 然後 [選取程式碼分析]。

更正程式碼分析問題

若要修正程式碼分析規則違規

  1. 在 [檢視] 功能表上,按一下 [錯誤清單]。

    根據所選擇的程式開發人員設定檔,您可能必須指向 [檢視] 功能表上的 [其他視窗],然後按一下 [錯誤清單]。

  2. 在 [方案總管] 中按一下 [顯示所有檔案]。

  3. 接著,展開 [屬性] 節點,然後開啟 AssemblyInfo.cs 檔。

  4. 使用下表來修正警告:

警告

若要修正警告

CA1014:以 CLSCompliantAttribute 標記組件: Microsoft.Design: 'demo' 應以 CLSCompliantAttribute 標記,且其值應為 true。

  1. 將程式碼 usingSystem; 加入至 AssemblyInfo.cs 檔。

  2. 接著,將程式碼 [assembly: CLSCompliant(true)] 加入至 AssemblyInfo.cs 檔的結尾。

  3. 重建專案。

CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo(String)。

  • 請將建構函式 public demo (String s) : base(s) { } 加入至類別 demo。

CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo(String, Exception)。

  • 請將建構函式 public demo (String s, Exception e) : base(s, e) { } 加入至類別 demo。

CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: protected demo(SerializationInfo, StreamingContext)。

  1. 將程式碼 using System.Runtime.Serialization; 加入至 Class1.cs 檔的開頭。

  2. 接著,加入建構函式 protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo.。

  3. 重建專案。

CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo()。

  1. 請將建構函式 public demo () : base() { } 加入至類別 demo。

  2. 重建專案。

CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將命名空間名稱 'testCode' 變更成 'TestCode',藉此修正其大小寫。

  • 將命名空間 testCode 的大小寫變更為 TestCode。

CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將型別名稱 'demo' 變更成 'Demo',藉此修正其大小寫。

  • 將成員的名稱變更為 Demo。

CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將成員名稱 'item' 變更成 'Item',藉此修正其大小寫。

  • 將成員的名稱變更為 Item。

CA1710:識別項應該使用正確的後置字元: Microsoft.Naming: 重新命名 'testCode.demo',使其以 'Exception' 結尾。

  • 將類別名稱和其建構函式變更為 DemoException。

CA2210:組件應包含有效的強式名稱: 以強式名稱金鑰簽署 'ManagedDemo'。

  1. 在 [專案] 功能表上,按一下 [ManagedDemo 屬性]。

    專案屬性隨即出現。

  2. 按一下 [簽署]。

  3. 選取 [簽署組件] 核取方塊。

  4. 在 [選擇強式名稱金鑰檔] 清單中,選擇 [<新增>]。

    [建立強式名稱金鑰] 對話方塊隨即出現。

  5. 在 [金鑰檔名稱] 中輸入 TestKey。

  6. 輸入密碼,然後按一下 [確定]。

  7. 在 [檔案] 功能表上,按一下 [儲存選取項目],然後關閉屬性頁。

  8. 重建專案。

CA2237:必須以 SerializableAttribute 標記 ISerializable 型別: Microsoft.Usage: 請將 [Serializable] 屬性加入至型別 'demo',因為這個型別會實作 ISerializable。

  1. 請將 [Serializable ()] 屬性 (Attribute) 加入至類別 (Class) demo。

  2. 重建專案。

在您完成變更之後, Class1.cs 檔看起來應該如下:

//CodeAnalysisManagedDemo
//Class1.cs
using System;
using System.Runtime.Serialization;


namespace TestCode
{

    [Serializable()] 
    public class DemoException : Exception
    {
        public DemoException () : base() { }
        public DemoException(String s) : base(s) { }
        public DemoException(String s, Exception e) : base(s, e) { }
        protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }

        public static void Initialize(int size) { }
        protected static readonly int _item;
        public static int Item { get { return _item; } }
    }
}

排除程式碼分析警告

若要排除程式碼缺失警告

  1. 針對每一個剩下的警告,請執行下列步驟:

    1. 在程式碼分析視窗,請選取警告。

    2. 選取 [動作],然後選取 [隱藏訊息],然後選取 [在專案檔中隱藏項目的檔案]。

    如需詳細資訊,請參閱HOW TO:使用功能表項目隱藏警告

  2. 重建專案。

    專案便開始建置,並且不會有任何警告或錯誤。