托管代码的“基本更正规则”规则集
" 基本更正规则 " 规则集中的逻辑错误和常见错误的焦点在 framework API 时。 " 基本更正规则 " 规则集中最少量建议规则 " 规则集包括规则。 有关更多信息,请 托管代码的“托管建议规则”规则集 参见您在最少量建议规则报告的警告列表应加入此规则集扩展。
下表 " Microsoft 基本更正规则 " 规则集中描述的所有规则。
规则 |
说明 |
---|---|
类型拥有一次性字段应为可释放的 |
|
正确声明事件处理程序 |
|
使用标记 AssemblyVersionAttribute 的程序集 |
|
接口方法应是可调用的由子类型 |
|
类型拥有本机资源应是一次性的 |
|
移动 P/Invokes 移到 NativeMethods 类 |
|
不要隐藏了基类方法 |
|
正确实现 IDisposable |
|
不要在意外的位置引发异常。 |
|
避免重复快捷键 |
|
P/Invoke 入口点应存在 |
|
P/Invokes 不应可见 |
|
自动布局类型不应是可见的 COM |
|
对 P/Invoke 后的 GetLastError |
|
COM 可见的类型基础类型应当可见的 COM |
|
COM 应与注册方法 |
|
正确声明 P/Invokes |
|
移除空的终结器 |
|
值类型字段应为可移植 |
|
P/Invoke 声明应可移植 |
|
不在对象的锁。弱标识 |
|
检查安全漏洞的 SQL 查询 |
|
封送指定 P/Invoke 字符串参数的 |
|
在值类型的声明性安全检查 |
|
指针不应可见 |
|
受保护的类型不应显示字段 |
|
方法安全应为类型扩展 |
|
APTCA 方法只应调用 APTCA 方法 |
|
APTCA 类型只应扩展 APTCA 基类型 |
|
不要取消显示链接要求的方法 |
|
重写链接要求应与中的基础 |
|
在外部尝试的换行易受攻击的最后子句 |
|
键入链接要求继承要求 |
|
安全关键类型不能参与类型等效 |
|
默认构造函数必须至少具有重要的与基类型默认构造函数 |
|
委托必须绑定到具有一致的透明度的方法 |
|
,并重写基方法时,方法必须保持一致的透明度 |
|
透明方法必须只包含可验证的 IL |
|
透明方法不能调用使用 SuppressUnmanagedCodeSecurity 属性的方法 |
|
透明代码不能引用安全关键项目 |
|
透明方法不能满足 Linkdemand |
|
类型必须至少具有重要的与它们的基类型约束和接口 |
|
透明方法不能使用安全断言 |
|
透明方法不能调用到本机代码 |
|
保留堆栈详细信息的重新 |
|
不要配置对象多次 |
|
初始化值类型静态字段内联 |
|
不要用 WebMethod 的服务组件 |
|
应配置一次性字段 |
|
不要对构造函数的可重写的方法 |
|
一次性类型应声明终结器 |
|
终结器应调用基类终结器 |
|
实现序列化构造函数 |
|
重载在重写 ValueType.Equals 的相等运算符 |
|
标记窗口入学人数表点与 STAThread |
|
标记所有非可序列化字段 |
|
调用了 ISerializable 类型的基类方法 |
|
用 SerializableAttribute 的实现 ISerializable 类型 |
|
正确执行序列化方法 |
|
正确实现 ISerializable |
|
提供正确的参数传递给格式的方法 |
|
正确测试 Nan |
|
枚举应具有零值 |
|
重载在重载运算符等于增加和减少 |
|
不要将文本充当本地化的参数 |
|
将字符串正常化为大写 |
|
不要忽略的方法结果 |
|
正确调用 GC.SuppressFinalize |
|
属性不应返回数组 |
|
使用字符串长度,测试空字符串 |
|
使用从目标结构的 API 仅 |
|
移除对 GC.KeepAlive |
|
使用 SafeHandle 封装本机资源 |
|
捕获一般处理程序的非 CLSCompliant 异常 |
|
只不要声明读取的可变引用类型 |
|
不应只读数组字段 |
|
安全断言 |
|
,在使用本机资源时,请调用 GC.KeepAlive |
|
密封满足专用接口的方法 |
|
安全序列化构造函数 |
|
静态构造函数应当是专用 |
|
安全关键常数应透明 |
|
使用 Win32 API 托管等效项 |
|
dispose 方法应调用基类配置 |
|
应保护终结器 |
|
不要降低继承的成员可见性 |
|
成员应由多个不同的返回类型 |
|
在重载运算符相等的 override equals |
|
运算符应具有对称重载 |
|
应只读取集合属性 |
|
为可选字段提供反序列化方法 |