托管代码的“扩展的设计准则规则”规则集

“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

裹在外层的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

CA1000

不要在泛型类型中使用静态成员

CA1002

不要公开泛型列表

CA1003

使用泛型事件处理程序实例

CA1004

泛型方法应提供类型参数

CA1005

避免泛型类型的参数过多

CA1006

不要将泛型类型嵌套在成员签名

CA1007

使用泛型(如适用)

CA1008

枚举应该具有0值

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

可比较类型重写方法

CA1038

枚举器应该是强类型

CA1039

列表是强类型

CA1041

提供ObsoleteAttribute消息

CA1043

将整型或字符串参数用于索引器

CA1044

属性不应是只写的

CA1046

不要对引用类型重载相等运算符

CA1047

不要在密封类型中声明受保护的成员

CA1048

不要在密封类型声明虚拟成员

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

重写equals和操作员的值类型等于

CA1819

属性不应返回数组

CA1820

测试使用字符串长度的空字符串

CA1822

将成员标记为 static

CA1823

避免未使用的私有字段

CA2201

不要引发保留的异常类型

CA2205

Win32 API的使用管理等同

CA2208

正确的实例化参数异常

CA2211

非常数区域应该是不可见

CA2217

不要使用FlagsAttribute标记枚举

CA2219

在异常子句中不引发异常

CA2221

终结应受到保护

CA2222

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

CA2223

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

CA2224

重写equals超载运算符等号

CA2225

运算符重载具有命名的备用

CA2226

运算符应有对称重载

CA2227

集合属性应该是只读

CA2230

使用PARAMS的可变参数

CA2234

传递System.Uri对象,而不是字符串

CA2239

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

CA1020

避免用几个类型命名空间

CA1021

避免out参数

CA1040

避免空接口

CA1045

不要通过引用传递类型

CA1062

验证的公共方法的参数

CA1501

避免过度继承

CA1504

查看误导字段名

CA1505

避免使用难以维护的代码

CA1506

避免过度类耦合

CA1700

不命名枚举值'保留'

CA1701

资源字符串复合词应该正确大小写

CA1702

复合词应该正确大小写

CA1703

资源字符串应该正确的拼写

CA1704

标识符应正确拼写

CA1707

标识符不应包含下划线

CA1709

标识符应正确大小写

CA1710

标识符应具有正确的后缀

CA1711

标识符不应该有不正确的后缀

CA1712

不要用类型名称前缀的枚举值

CA1713

事件不应之前或之后有前缀

CA1714

标志枚举应该使用复数名称

CA1715

标识符应具有正确的前缀

CA1717

只有FlagsAttribute的枚举应该使用复数名称

CA1719

参数名称不应与成员名称相对应

CA1720

标识符不应该包含类型名称

CA1721

属性名称不应与get方法相匹

CA1722

标识符不应该有不正确的前缀

CA1724

类型名称不应该与命名空间

CA1725

参数名称应与基类声明相一致

CA1726

使用首选术语

CA2204

文字应该正确的拼写