托管代码的“托管建议规则”规则集
可以使用“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基本类型 |
|
不要使用链接请求间接公开方法 |
|
重写的链接请求应与基相同 |
|
裹在外层的try脆弱的finally子句 |
|
类型链接请求需要继承要求 |
|
安全关键类型可能不参与类型等价 |
|
默认构造函数必须至少与基类型默认构造函数一样关键 |
|
委托必须绑定到具有一致透明度的方法 |
|
重写基方法时,方法必须保持一致的透明度 |
|
透明方法必须只包含可验证的IL |
|
透明方法不得调用与SuppressUnmanagedCodeSecurity属性的方法 |
|
透明代码不得引用安全关键项 |
|
透明方法不得满足LinkDemands |
|
类型必须至少与其基类型和接口一样关键 |
|
透明方法不得使用安全断言 |
|
透明方法不能调用本地代码 |
|
重新抛出保存堆栈的详细信息 |
|
不要多次释放对象 |
|
以内联方式初始化值类型的静态字段 |
|
不要使用 WebMethod 标记服务组件 |
|
应释放可释放的字段 |
|
不要调用构造函数重写的方法 |
|
可释放类型应声明终结器 |
|
终结器应调用基类的终结器 |
|
实现序列化构造函数 |
|
重写 ValueType.Equals 时应重载相等运算符 |
|
使用 STAThread 标记 Windows 窗体的入口点 |
|
标记所有不可序列化的字段 |
|
对 ISerializable 的类调用基类方法 |
|
以 SerializableAttribute 标记 ISerializable 类型 |
|
正确实现序列化方法 |
|
正确实现 ISerializable |
|
为格式化方法提供正确的参数 |
|
正确测试NaN |