逐步解說:使用靜態程式碼分析來尋找程式碼缺失
在此逐步解說中,您將使用舊版程式碼分析,來分析受控專案中是否有程式碼缺失。
本文將逐步引導您使用舊版分析來分析 .NET 受控程式碼組件,以符合 .NET 設計指導方針。
建立類別庫
開啟 Visual Studio,然後從類別庫 (.NET Framework) 範本建立新專案。
將專案命名為 CodeAnalysisManagedDemo。
建立專案之後,開啟 Class1.cs 檔案。
以下列程式碼取代 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; } } } }
儲存 Class1.cs 檔案。
分析專案中是否有程式碼缺失
在 [方案總管] 中選取 CodeAnalysisManagedDemo 專案。
按一下 [專案] 功能表上的 [屬性]。
CodeAnalysisManagedDemo 屬性頁面隨即顯示。
選取 [程式碼分析] 索引標籤。
確定已在 [二進位分析器] 區段中選取 [在組建上執行]。
從 [作用中規則] 下拉式清單中,選取 [Microsoft 所有規則]。
在 [檔案] 功能表上,按一下 [儲存選取的項目],然後關閉屬性頁面。
在 [建置] 功能表上,按一下 [建置 CodeAnalysisManagedDemo]。
CodeAnalysisManagedDemo 專案建置警告會顯示在 [錯誤清單] 和 [輸出] 視窗中。
更正程式碼分析問題
在 [檢視] 功能表上,選擇 [錯誤清單]。
視選擇的開發人員設定檔而定,您可能必須指向 [檢視] 功能表上的 [其他 Windows],然後選擇 [錯誤清單]。
在 [方案總管] 中選擇 [顯示所有檔案]。
展開 [屬性] 節點,然後開啟 AssemblyInfo.cs 檔案。
使用下列秘訣來更正警告:
CA1014:使用 CLSCompliantAttribute 標記組件:將程式碼
[assembly: CLSCompliant(true)]
新增至 AssemblyInfo.cs 檔案的結尾。CA1032:實作標準例外狀況建構函式:將建構函式
public demo (String s) : base(s) { }
新增至類別demo
。CA1032:實作標準例外狀況建構函式:將建構函式
public demo (String s, Exception e) : base(s, e) { }
新增至類別demo
。CA1032:實作標準例外狀況建構函式:將建構函式
protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { }
新增至類別示範。 您也必須新增 System.Runtime.Serialization 的using
陳述式。CA1032:實作標準例外狀況建構函式:將建構函式
public demo () : base() { }
新增至類別demo
。CA1709:識別碼的大小寫應正確:將命名空間
testCode
的大小寫變更為TestCode
。CA1709:識別碼的大小寫應正確:將成員的名稱變更為
Demo
。CA1709:識別碼的大小寫應正確:將成員的名稱變更為
Item
。CA1710:識別碼應有正確的尾碼:將類別的名稱及其建構函式變更為
DemoException
。CA2237:使用 SerializableAttribute 標記 ISerializable 型別:將
[Serializable ()]
屬性新增至類別demo
。CA2210:組件應有有效的強式名稱:使用強式名稱金鑰簽署 'CodeAnalysisManagedDemo':
在 [專案] 功能表上,選擇 [CodeAnalysisManagedDemo 屬性]。
專案屬性隨即出現。
選擇 [ 簽署 ] 索引標籤。
選取 [簽署組件] 核取方塊。
在 [選擇強式名稱金鑰檔] 清單中,選取 <新增>。
[建立強式名稱金鑰] 對話方塊隨即出現。
針對 [金鑰檔案名稱],輸入 TestKey。
輸入密碼,然後選擇 [確定]。
在 [檔案] 功能表上,選擇 [儲存選取的項目],然後關閉屬性頁。
完成所有變更之後,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; } } } }
重建專案。
排除程式碼分析警告
針對其餘每個警告,請執行下列動作:
在 [錯誤清單] 中選取警告。
以滑鼠右鍵按一下功能表 (捷徑功能表),選擇 [隱藏]>[在隱藏項目檔中]。
重建專案。
專案建置時沒有任何警告或錯誤。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應