逐步解說:分析 Managed 程式碼中的程式碼缺失
在這個逐步解說中,您會使用程式碼分析工具分析 Managed 專案,找出程式碼缺失。
這個逐步解說會引導您使用程式碼分析工具,分析 .NET Managed 程式碼組件 (Assembly),以便符合 .NET Framework 設計方針。
在本逐步解說中,您將會:
- 分析並修正程式碼缺失警告。
必要條件
- Visual Studio Premium.
建立類別庫
若要建立類別庫 |
|
分析專案
若要分析 Managed 專案並找出程式碼缺失
在 [方案總管] 中,選取 [CodeAnalysisManagedDemo] 專案。
在 [專案] 功能表上,按一下 [屬性]。
CodeAnalysisManagedDemo 屬性頁隨即顯示。
按一下 [程式碼分析]。
選取 [建置時啟用程式碼分析 (定義 CODE_ANALYSIS 常數)]。
在 [執行此規則集] 下拉式清單中,選取 [Microsoft 所有規則]。
在 [檔案] 功能表上,按一下 [儲存選取項目],然後關閉 ManagedDemo 屬性頁。
在 [建置] 功能表上按一下 [建置 ManagedDemo]。
CodeAnalysisManagedDemo 專案建置警告會回報在 [錯誤清單] 和 [輸出] 視窗中。
如果 [程式碼分析] 視窗不會出現, [分析] 在功能表上,選擇 [Windows] 然後 [選取程式碼分析]。
更正程式碼分析問題
若要修正程式碼分析規則違規
在 [檢視] 功能表上,按一下 [錯誤清單]。
根據所選擇的程式開發人員設定檔,您可能必須指向 [檢視] 功能表上的 [其他視窗],然後按一下 [錯誤清單]。
在 [方案總管] 中按一下 [顯示所有檔案]。
接著,展開 [屬性] 節點,然後開啟 AssemblyInfo.cs 檔。
使用下表來修正警告:
警告 |
若要修正警告 |
---|---|
CA1014:以 CLSCompliantAttribute 標記組件: Microsoft.Design: 'demo' 應以 CLSCompliantAttribute 標記,且其值應為 true。 |
|
CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo(String)。 |
|
CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo(String, Exception)。 |
|
CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: protected demo(SerializationInfo, StreamingContext)。 |
|
CA1032:必須實作標準例外狀況建構函式: Microsoft.Design: 將下列建構函式加入至這個類別: public demo()。 |
|
CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將命名空間名稱 'testCode' 變更成 'TestCode',藉此修正其大小寫。 |
|
CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將型別名稱 'demo' 變更成 'Demo',藉此修正其大小寫。 |
|
CA1709:識別項名稱應該使用正確的大小寫: Microsoft.Naming: 將成員名稱 'item' 變更成 'Item',藉此修正其大小寫。 |
|
CA1710:識別項應該使用正確的後置字元: Microsoft.Naming: 重新命名 'testCode.demo',使其以 'Exception' 結尾。 |
|
CA2210:組件應包含有效的強式名稱: 以強式名稱金鑰簽署 'ManagedDemo'。 |
|
CA2237:必須以 SerializableAttribute 標記 ISerializable 型別: Microsoft.Usage: 請將 [Serializable] 屬性加入至型別 'demo',因為這個型別會實作 ISerializable。 |
|
在您完成變更之後, 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; } }
}
}
排除程式碼分析警告
若要排除程式碼缺失警告
針對每一個剩下的警告,請執行下列步驟:
在程式碼分析視窗,請選取警告。
選取 [動作],然後選取 [隱藏訊息],然後選取 [在專案檔中隱藏項目的檔案]。
如需詳細資訊,請參閱HOW TO:使用功能表項目隱藏警告。
重建專案。
專案便開始建置,並且不會有任何警告或錯誤。