共用方式為


適用於 Managed 程式碼的基本正確性規則規則集

「Microsoft 基本正確性規則」規則集將焦點放在使用 Framework API 時的邏輯錯誤和常見的錯誤。「基本正確性規則」包含「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

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

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