共用方式為


適用於 Managed 程式碼的基本設計方針規則規則集

您可以使用「Microsoft 基本設計方針規則」規則集,將重點放在讓程式碼更易懂又好用。如果專案包含程式庫程式碼或您想強制執行最佳做法以便於維護程式碼,則應包含這個規則集。

「基本設計方針規則」包含「Microsoft 最小建議規則」規則集中的所有規則。如需最小規則的清單,請參閱 適用於 Managed 程式碼的 Managed 建議規則規則集

下表說明「Microsoft 基本設計方針規則」規則集中的所有規則。

規則

描述

CA1001

具有可處置欄位的型別應該是可處置的

CA1009

正確宣告事件處理常式

CA1016

以 AssemblyVersionAttribute 標記組件

CA1033

介面方法應該要可以由子型別呼叫

CA1049

擁有原生資源的型別應為可處置

CA1060

將 P/Invokes 移到 NativeMethods 類別

CA1061

不要隱藏基底類別方法

CA1063

必須正確實作 IDisposable

CA1065

不要在非預期的位置中引發例外狀況

CA1301

避免使用重複的快速鍵

CA1400

P/Invoke 進入點應該要存在

CA1401

P/Invokes 不應該為可見的

CA1403

自動配置型別不應該是 COM 可見的

CA1404

必須在 P/Invoke 之後立即呼叫 GetLastError

CA1405

COM 可見型別的基底型別應該是 COM 可見的

CA1410

應該符合 COM 註冊方法

CA1415

P/Invokes 必須正確宣告

CA1821

必須移除空的完成項

CA1900

實值型別欄位應該為可移植的

CA1901

P/Invoke 宣告應該是可移植的

CA2002

請勿鎖定具有弱式識別的物件

CA2100

必須檢視 SQL 查詢中是否有安全性弱點

CA2101

必須指定 P/Invoke 字串引數的封送處理

CA2108

必須檢查實值型別上的宣告式安全性

CA2111

指標不應該為可見的

CA2112

受保護型別不應公開欄位

CA2114

方法安全性應該是型別的超集合

CA2116

APTCA 方法應該只呼叫 APTCA 方法

CA2117

APTCA 型別應該只擴充 APTCA 基底型別

CA2122

不要間接公開具有連結要求的方法

CA2123

覆寫連結要求應該與基底相同

CA2124

必須將有弱點的 finally 子句包裝在外層 try 中

CA2126

必須同時具有型別連結要求和繼承要求

CA2131

安全性關鍵型別可能未參與型別等價

CA2132

預設建構函式至少必須和基底型別的預設建構函式一樣關鍵

CA2133

委派必須繫結至透明度一致的方法

CA2134

覆寫基底方法時,方法必須保持一致的透明度

CA2137

透明方法必須只包含可驗證的 IL

CA2138

透明方法不可以使用 SuppressUnmanagedCodeSecurity 屬性呼叫方法

CA2140

透明程式碼不可以參考安全性關鍵項目

CA2141

透明方法不可以滿足 LinkDemand

CA2146

型別至少必須和基底型別與介面一樣關鍵

CA2147

透明的方法不可以使用安全性判斷提示

CA2149

透明方法不可以呼叫機器碼

CA2200

請重新擲回以保存堆疊詳細資料

CA2202

不要多次處置物件

CA2207

必須初始化實值型別的靜態內嵌欄位

CA2212

不要以 WebMethod 標記 Serviced 元件

CA2213

可處置的欄位應該受到處置

CA2214

不要呼叫建構函式中的可覆寫方法

CA2216

可處置型別應該宣告完成項

CA2220

完成項應該呼叫基底類別完成項

CA2229

請實作序列化建構函式

CA2231

覆寫 ValueType.Equals 時必須一併多載等號比較運算子

CA2232

以 STAThread 標記 Windows Form 進入點

CA2235

必須標記所有不可序列化的欄位

CA2236

必須呼叫 ISerializable 型別上的基底類別方法

CA2237

必須以 SerializableAttribute 標記 ISerializable 型別

CA2238

請正確實作序列化方法

CA2240

必須正確實作 ISerializable

CA2241

必須提供格式化方法的正確引數

CA2242

必須正確地測試 NaN

CA1000

不要在泛型型別上宣告靜態成員

CA1002

不要公開泛型清單

CA1003

必須使用一般事件處理常式執行個體

CA1004

泛型方法應該提供型別參數

CA1005

避免在泛型型別上包含過多參數

CA1006

不要在成員簽章中巢狀化泛型型別

CA1007

建議在適當時使用泛型

CA1008

列舉值中應該要有值為零的成員

CA1010

集合應該實作泛型介面

CA1011

建議將基底型別當做參數傳遞

CA1012

抽象型別不應具有建構函式

CA1013

多載加號和減號運算子時必須一併多載等號比較運算子

CA1014

以 CLSCompliantAttribute 標記組件

CA1017

以 ComVisibleAttribute 標記組件

CA1018

以 AttributeUsageAttribute 標記屬性

CA1019

必須定義屬性引數的存取子

CA1023

不應該使用多維索引子

CA1024

建議在適當時使用屬性

CA1025

必須以參數陣列取代重複的引數

CA1026

不應使用預設參數

CA1027

必須以 FlagsAttribute 標記列舉

CA1028

列舉儲存區應該是 Int32

CA1030

建議在適當時使用事件

CA1031

不要攔截一般例外狀況型別

CA1032

必須實作標準例外狀況建構函式

CA1034

巢狀型別不應為可見

CA1035

ICollection 實作包含強型別成員

CA1036

必須在 Comparable 型別中覆寫方法

CA1038

列舉程式應該是強型別

CA1039

清單為強型別

CA1041

提供 ObsoleteAttribute 訊息

CA1043

必須針對索引子使用整數類或字串引數

CA1044

屬性不應為唯寫

CA1046

請勿多載參考型別上的等號比較運算子

CA1047

密封型別不應該宣告 protected 成員。

CA1048

不要在密封型別中宣告 virtual 成員

CA1050

在命名空間中宣告型別

CA1051

不要宣告可見的執行個體欄位

CA1052

靜態預留位置型別應該為密封的

CA1053

靜態預留位置型別不應包含建構函式

CA1054

URI 參數不應該為字串

CA1055

URI 傳回值不應該為字串

CA1056

URI 屬性不應該為字串

CA1057

字串 URI 多載呼叫 System.Uri 多載

CA1058

型別不應該擴充特定的基底型別

CA1059

成員不應該公開特定的具象型別。

CA1064

例外狀況必須是公用

CA1500

變數名稱不應該與欄位名稱相符

CA1502

避免過度複雜

CA1708

識別項名稱不應該只靠大小寫區別

CA1716

識別項名稱不應該和關鍵字相符

CA1801

必須檢視未使用的參數

CA1804

必須移除未使用的區域變數

CA1809

避免使用過多區域變數

CA1810

必須初始化參考型別內部的靜態欄位

CA1811

避免使用未呼叫的私用程式碼

CA1812

避免使用未執行個體化的內部類別

CA1813

避免使用非密封屬性

CA1814

建議使用不規則陣列取代多維陣列

CA1815

覆寫實值型別上的等號和等號比較運算子

CA1819

屬性不應傳回陣列

CA1820

應該使用字串長度測試空白字串

CA1822

將成員標記為靜態

CA1823

避免包含未使用的私用欄位

CA2201

不要引發保留的例外狀況型別

CA2205

必須使用 Win32 API 的 Managed 對應項

CA2208

請正確執行個體化引數例外狀況

CA2211

非常數欄位不應該為可見的

CA2217

不要以 FlagsAttribute 標記列舉

CA2219

不要在 exception 子句中引發例外狀況

CA2221

完成項應該受到保護

CA2222

請勿降低繼承成員的可視性

CA2223

成員不應該只有在傳回型別上不同

CA2224

多載等號比較運算子時必須一併覆寫 Equals

CA2225

運算子多載必須有具名的替代方法

CA2226

運算子應該有對稱的多載

CA2227

集合屬性應該為唯讀

CA2230

必須使用 params 做為變數引數

CA2234

必須傳遞 System.Uri 物件,而不要傳遞字串

CA2239

必須為選擇性欄位提供還原序列化方法