托管代码的“基本更正规则”规则集

基本更正规则规则集侧重于使用 framework API 时的逻辑错误和常见错误。“基本更正规则”包括“Microsoft 最少量建议规则”规则集中的规则。有关更多信息,请参见 托管代码的“托管建议规则”规则集。应加入此规则集以扩展最少量建议规则所报告的警告列表。

下表介绍了“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

裹在外层的try脆弱的finally子句

CA2126

类型链接请求需要继承要求

CA2131

安全关键类型可能不参与类型等价

CA2132

默认构造函数必须至少与基类型默认构造函数一样关键

CA2133

委托必须绑定到具有一致透明度的方法

CA2134

重写基方法时,方法必须保持一致的透明度

CA2137

透明方法必须只包含可验证的IL

CA2138

透明方法不得调用与SuppressUnmanagedCodeSecurity属性的方法

CA2140

透明代码不得引用安全关键项

CA2141

透明方法不得满足LinkDemands

CA2146

类型必须至少与其基类型和接口一样关键

CA2147

透明方法不得使用安全断言

CA2149

透明方法不能调用本地代码

CA2200

重新抛出保存堆栈的详细信息

CA2202

不要多次释放对象

CA2207

以内联方式初始化值类型的静态字段

CA2212

不要使用 WebMethod 标记服务组件

CA2213

应释放可释放的字段

CA2214

不要调用构造函数重写的方法

CA2216

可释放类型应声明终结器

CA2220

终结器应调用基类的终结器

CA2229

实现序列化构造函数

CA2231

重写 ValueType.Equals 时应重载相等运算符

CA2232

使用 STAThread 标记 Windows 窗体的入口点

CA2235

标记所有不可序列化的字段

CA2236

对 ISerializable 的类调用基类方法

CA2237

以 SerializableAttribute 标记 ISerializable 类型

CA2238

正确实现序列化方法

CA2240

正确实现 ISerializable

CA2241

为格式化方法提供正确的参数

CA2242

正确测试NaN

CA1008

枚举应该具有0值

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的使用管理等同

CA2215

Dispose 方法应调用基类的 Dispose

CA2221

终结应受到保护

CA2222

不要降低继承成员的可见性

CA2223

成员应该超过返回类型不同

CA2224

重写equals超载运算符等号

CA2226

运算符应有对称重载

CA2227

集合属性应该是只读

CA2239

提供反序列化方法可选字段