共用方式為


適用於 Managed 程式碼的擴充正確性規則規則集

「Microsoft 擴充正確性規則」規則集會讓程式碼分析回報的邏輯和 Framework 使用錯誤達到最大的功效。另外則特別強調 COM 互通性和行動應用這類特定案例。如果其中一個案例適合您的專案或您想找出專案的其他問題,請考慮包含這個規則集。

「Microsoft 擴充正確性規則」規則集包含「Microsoft 基本正確性規則」規則集中的規則。「基本正確性規則」包含「Microsoft 最小建議規則」規則集中的規則。如需詳細資訊,請參閱 適用於 Managed 程式碼的基本正確性規則規則集適用於 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

CA1008

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

CA1013

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

CA1303

不要將常值當做已當地語系化的參數傳遞

CA1308

必須將字串標準化為大寫字母

CA1806

不要忽略方法的結果

CA1816

正確呼叫 GC.SuppressFinalize

CA1819

屬性不應傳回陣列

CA1820

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

CA1903

只使用來自目標架構的 API

CA2004

必須移除對 GC.KeepAlive 的呼叫

CA2006

使用 SafeHandle 封裝原生資源

CA2102

在一般處理常式中攔截非 CLSCompliant 的例外狀況

CA2104

不要宣告唯讀的可變動參考型別

CA2105

陣列欄位不應為唯讀

CA2106

保護判斷提示

CA2115

使用原生資源時必須呼叫 GC.KeepAlive

CA2119

密封方法以滿足私用介面的要求

CA2120

必須保護序列化建構函式

CA2121

靜態建構函式應為私用

CA2130

安全性關鍵常數應該是透明的

CA2205

必須使用 Win32 API 的 Managed 對應項

CA2215

Dispose 方法應該呼叫基底類別處置

CA2221

完成項應該受到保護

CA2222

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

CA2223

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

CA2224

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

CA2226

運算子應該有對稱的多載

CA2227

集合屬性應該為唯讀

CA2239

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

CA1032

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

CA1054

URI 參數不應該為字串

CA1055

URI 傳回值不應該為字串

CA1056

URI 屬性不應該為字串

CA1057

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

CA1402

避免在 COM 可見介面中多載

CA1406

避免對 Visual Basic 6 用戶端使用 Int64 引數

CA1407

避免在 COM 可見型別中使用靜態成員

CA1408

不要使用 AutoDual ClassInterfaceType

CA1409

COM 可見型別應該是可建立的

CA1411

COM 註冊方法不應該為可見的

CA1412

將 ComSource 介面標記為 IDispatch

CA1413

避免在 COM 可見的實值型別中使用非公用欄位

CA1414

以 MarshalAs 標記布林值 P/Invoke 引數

CA1600

不要使用 Idle 處理序優先權

CA1601

不要使用會妨礙電源狀態變更的計時器

CA1824

以 NeutralResourcesLanguageAttribute 標記組件

CA2001

避免呼叫有問題的方法

CA2003

不要將 Fiber 視為執行緒

CA2135

層級 2 組件不應該包含 LinkDemand

CA2136

成員不應該具有衝突的透明度附註

CA2139

透明方法不能使用 HandleProcessCorruptingExceptions 屬性

CA2142

透明程式碼不可以使用 LinkDemand 加以保護

CA2143

透明方法不可以使用安全性要求

CA2144

透明程式碼不可以從位元組陣列載入組件

CA2145

透明方法不可以使用 SuppressUnmanagedCodeSecurityAttribute 來裝飾

CA2204

常值必須使用正確的拼字

CA2211

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

CA2217

不要以 FlagsAttribute 標記列舉

CA2218

覆寫 Equals 時必須一併覆寫 GetHashCode

CA2219

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

CA2225

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

CA2228

不要使用尚未發行版本所支援的格式建置資源

CA2230

必須使用 params 做為變數引數

CA2233

運算不應該發生溢位

CA2234

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

CA2243

屬性字串常值必須正確剖析