托管代码的“扩展的更正规则”规则集

Microsoft 扩展的规则集最大化逻辑和结构使用错误由代码分析报告中的规则。 着重强调了某些特定的方案 (如 COM 互操作性和移动应用程序。 应考虑加入此规则集,如果这些情况之一应用于项目或若要查找项目中的其他问题。

Microsoft 扩展的规则集包括 " Microsoft 基本更正规则 " 规则集中的规则。 " 基本更正规则 " 包括 " 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

在外部尝试的换行易受攻击的最后子句

CA2126

键入链接要求继承要求

CA2131

安全关键类型不能参与类型等效

CA2132

默认构造函数必须至少具有重要的与基类型默认构造函数

CA2133

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

CA2134

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

CA2137

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

CA2138

透明方法不能调用使用 SuppressUnmanagedCodeSecurity 属性的方法

CA2140

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

CA2141

透明方法不能满足 Linkdemand

CA2146

类型必须至少具有重要的与它们的基类型约束和接口

CA2147

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

CA2149

透明方法不能调用到本机代码

CA2200

保留堆栈详细信息的重新

CA2202

不要配置对象多次

CA2207

初始化值类型静态字段内联

CA2212

不要用 WebMethod 的服务组件

CA2213

应配置一次性字段

CA2214

不要对构造函数的可重写的方法

CA2216

一次性类型应声明终结器

CA2220

终结器应调用基类终结器

CA2229

实现序列化构造函数

CA2231

重载在重写 ValueType.Equals 的相等运算符

CA2232

标记窗口入学人数表点与 STAThread

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 托管等效项

CA2215

dispose 方法应调用基类配置

CA2221

应保护终结器

CA2222

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

CA2223

成员应由多个不同的返回类型

CA2224

在重载运算符相等的 override equals

CA2226

运算符应具有对称重载

CA2227

应只读取集合属性

CA2239

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

CA1032

实现标准异常构造函数

CA1054

URI 的参数不应是字符串

CA1055

URI 返回值不应是字符串

CA1056

URI 属性不应是字符串

CA1057

字符串 URI 重载调用 System.Uri 重载

CA1402

避免在 COM 可见的接口的重载

CA1406

避免 Int64 Visual Basic 中的参数 6 client

CA1407

避免 COM 可见的类型的静态成员

CA1408

不要使用 AutoDual ClassInterfaceType

CA1409

COM 可见的类型应创建

CA1411

注册 COM 方法不应可见

CA1412

标记 ComSource 接口为 IDispatch

CA1413

避免在 COM 可见的值类型的非公共字段

CA1414

标记与 MarshalAs 的布尔 P/Invoke 参数

CA1600

不要使用空闲进程优先级

CA1601

不要使用阻止电源状态更改的计时器

CA1824

使用标记 NeutralResourcesLanguageAttribute 的程序集

CA2001

避免调用有问题的方法

CA2003

不将纤程当线程

CA2135

级别 2 程序集不应包含 Linkdemand

CA2136

成员不应存在冲突的透明度批注

CA2139

透明方法不能使用 HandleProcessCorruptingExceptions 属性

CA2142

不应保护透明代码使用 Linkdemand

CA2143

透明方法不应使用安全要求

CA2144

透明代码不应从字节数组加载程序集

CA2145

不应使用 SuppressUnmanagedCodeSecurityAttribute 修饰透明方法

CA2204

应正确拼写文本

CA2211

非常数字段不应可见

CA2217

不要用 FlagsAttribute 枚举

CA2218

在 override equals 的重写 GetHashCode

CA2219

不要引发该异常子句的异常

CA2225

运算符重载将备用项名称

CA2228

不要交付未释放的资源格式

CA2230

为可变参数使用参数

CA2233

操作不应溢出

CA2234

通过 System.Uri 对象而不是字符串

CA2243

属性字符串应正确分析