“混合建议规则”规则集
Microsoft 组合建议的 " 规则集重点解决最常见,并且在支持您的 C++ 项目的重要问题公共语言运行时 (clr),包括潜在的安全漏洞,应用程序崩溃和其他重要的逻辑和设计错误。 在任何自定义规则应加入此规则集为支持公共语言运行时的 C++ 项目创建。 方式配置此 ruleset 使用 Visual Studio 专业版和更高版本。
规则 |
说明 |
---|---|
使用未初始化的内存 |
|
取消引用 null 指针 |
|
对未经检查的值的使用 |
|
返回忽略的值 |
|
零终止从调用 |
|
零终止缺少 |
|
串联错误 |
|
格式设置功能的缺少字符串参数 |
|
格式设置功能的缺少整数参数 |
|
格式设置功能的丢失的指针参数 |
|
格式设置功能的缺少字符串指针参数 |
|
返回未初始化的内存 |
|
索引超出缓冲区的最大数量 |
|
索引超出堆栈缓冲区的最大数量 |
|
到 BOOL 的无效强制转换 HRESULT |
|
为 HRESULT 的无效强制转换 BOOL |
|
为 HRESULT 的无效编译器插入的转换 BOOL |
|
无效的 HRESULT 测试使用没有 |
|
无效的 HRESULT 比较为 -1 |
|
无效的 HRESULT 分配给 -1 |
|
无效的 HRESULT 使用如布尔值 |
|
非零常数。 |
|
逻辑或与非零常数 |
|
零与逻辑和丢失副作用 |
|
展开局部堆栈强制 |
|
创建空 DACL |
|
未释放的地址描述符 |
|
对 Alloca 的不受保护的使用 |
|
使用 " 终止线程 |
|
死代码按位或限位开关 |
|
为字节算法中使用 |
|
额外的堆栈使用率 |
|
在循环中使用 Alloca |
|
在转换中缺少括号 |
|
忽略的指针取消引用 |
|
格式设置功能的缺少的参数 |
|
格式设置功能的额外参数 |
|
格式设置功能的非浮点参数 |
|
非整数格式设置功能的 Argumen |
|
格式设置功能的非字符参数 |
|
无效字符串转换 |
|
无效 CreateProcess 调用 |
|
数组新的标量删除不匹配 |
|
标量新数组删除不匹配 |
|
内存分配释放不匹配 |
|
按位关系优先级 |
|
分配替换测试 |
|
原始数组新的标量删除不匹配 |
|
对布局功能的对象参数无效 |
|
常数。 |
|
非零逻辑或丢失的副作用 |
|
冗余测试 |
|
相互包括逻辑和为 false |
|
互斥为 true。 |
|
逻辑不按位与优先级 |
|
逻辑不按位或优先级 |
|
循环从最大值往上计数 |
|
循环从最小值往下计数 |
|
执行的循环体 |
|
无限循环 |
|
仅执行一次的循环 |
|
移位的结果被强制转换为更大 |
|
为布尔值比较的 Bitfield |
|
格式设置功能的无效字符字符串参数 |
|
格式设置功能的无效的宽字符字符串参数 |
|
不匹配的大小和计数使用 |
|
不正确的变量参数函数调用 |
|
Realloc 泄漏 |
|
非法异常筛选器常数 |
|
异常继续执行循环 |
|
按位或优先级 |
|
不是补集 |
|
异常继续搜索 |
|
忽略由逗号 |
|
而不是字符串的字符串复制比较 |
|
潜在的参数类型不匹配 |
|
VirtualFree 无效标志 |
|
VirtualFree 参数无效 |
|
VirtualFree 无效范围 |
|
处理句柄泄漏 |
|
关闭信息缺少 |
|
元素计数字节计数缓冲区溢出 |
|
指针大小除法 |
|
读取超过 |
|
编写超过 |
|
参数值无效 |
|
参数值无效 |
|
无效的特性属性 |
|
冲突的属性 |
|
引用不能为空 |
|
在非指针的空 |
|
在无效的 MustCheck |
|
在非指针或数组的缓冲区大小 |
|
在取消引用零的空不匹配 |
|
常数中编写 |
|
返回使用在前置条件 |
|
在非指针终止 null |
|
MustCheck 必须是/否 |
|
没有缓冲区大小的元素的大小 |
|
缓冲区大小超过数组大小 |
|
在非指针的缓冲区大小 |
|
在属性上无特性 |
|
在不可读的缓冲区的有效范围 |
|
在非可写缓冲区的可写的大小 |
|
无效的批注:“NeedsRelease 属性的值必须是/否 |
|
无效范围字符串取消引用 |
|
无效范围字符串类型 |
|
无效字符串参数范围 |
|
无效范围字符串无法访问的位置 |
|
无效范围字符串缓冲区类型 |
|
无效的批注:“NeedsRelease 属性在无效类型的值不能使用 |
|
无法识别的格式字符串样式 |
|
使用此功的属性批注将无效其所有现有 __declspec 批注 |
|
大小规格无效:parsable 的表达式 |
|
无效 Deref= 或 Notref=:parsable 的表达式 |
|
该值不+一有效是/否/可能值 |
|
该值不是字符串值 |
|
该值不是数字 |
|
意外的批注表达式错误 |
|
参数的预期数字的批注不匹配参数的实际数目的批注 |
|
批注的意外的批注错误 |
|
未能保存 XML 日志文件 |
|
争用条件 |
|
无法正确地使用互锁操作 |
|
持有锁的调用方失败 |
|
释放锁的调用方失败 |
|
调用方不能保存任何锁 |
|
未能释放锁 |
|
无法获得或持有锁 |
|
释放锁 unheld |
|
并发 SAL 注释错误 |
|
该表达式不是真正的此调用 |
|
批注的参数必须是指针 |
|
此函数的类不与用于 typedef 的功能类定义。 |
|
分配或传递的函数应至少有一个的一个 _Function_class_ 批注类 |
|
分配到的函数指针说明与功能类,在函数中包含课程表。 |
|
实际参数的类型应完全匹配该类型 |
|
通过一个互锁的功能捕获的变量必须传递一个互锁的函数始终访问。 |
|
访问局部变量传递一个互锁的功能 |
|
必须调用函数从一次尝试的内部/除块 |
|
可变参数应为 (文本) 常数 |
|
常数参数应为可变 |
|
考虑使用另一个函数。 |
|
错误批注 |
|
不应调用函数从一次尝试的内部/除块 |
|
传递给需要指向对象的指针的函数 (指向的不是指针) |
|
取消引用 NULL 指针。 指针包含与其他指针的 null 值。 |
|
参数可以是一个值,并在指针找到的值的副本 |
|
变量表示必须检查的值 |
|
该要求是不够的。 (该表达式不计算结果为 true。) |
|
非法引用非静态成员 |
|
明确引用类成员。 |
|
用于一个非法上下文或 _On_failure_ 的 _Success_ |
|
左操作数指向结构,使用 “- > |
|
左操作数是结构,使用 “”。 |
|
符号的声明一个具有冲突的说明 |
|
__on_failure 上下文的批注不能在显式之前上下文 |
|
为 SAL_context 预期的静态上下文名称 |
|
批注预期的指针表达式 |
|
必须使用 _Use_decl_annotations_ 批注,引用,而无需修改,一个以前的声明。 |
|
属性参数名称必须是 p1… p9 |
|
typefix 不能应用于已具有 typefix 的参数 |
|
checkReturn 批注只应用于特定函数参数的后置条件。 |
|
为函数,参数数目到批注的不匹配的所有文件 |
|
指向函数 paramteer,批注的参数不匹配的所有文件 |
|
枚举的成员批注应在该批注的参数 |
|
整数表达式批注应在该批注的参数 |
|
为批注的参数所需的字符串表达式 |
|
__yes、批注预期的 __no 或 __maybe |
|
未找到预期的标记/标识符批注的参数, |
|
批注需要参数 |
|
没有看到需的正确数目的参数批注中 |
|
批注不能同时是 PrimOp (在当前声明) |
|
批注不能同时是 PrimOp (请参见前面声明) |
|
批注参数:不能使用类型批注 |
|
批注不支持参数 |
|
参数的类型没有成员。 |
|
批注只适用于数组 |
|
之前,后置或 deref 未应用于任何批注 |
|
之前,后置或 deref 会应用于块 |
|
__at 表达式不适用于当前函数 |
|
函数不能单独并肩作战与批注 |
|
批注将不能在表达式 |
|
在参数的批注不再支持 |
|
在参数的批注具有多个值、 stringValue 和 longValue。 使用 paramn=xxx |
|
在参数的批注具有两个值、 stringValue 或 longValue;并 paramn=xxx。 仅使用 paramn=xxx |
|
在参数的批注没有 param2,但 param1 |
|
函数的批注参数中不识别 |
|
函数的批注在参数比批注的实际类型允许需要更多的取消引用 |
|
函数的批注具有一个 unparseable 参数/外部批注 |
|
函数的批注说明 “this " 在非成员函数 |
|
函数的参数批注不匹配参数的类型 |
|
函数的不一致的批注:前面的实例有错误。 |
|
函数的不一致的批注:此实例都有一个错误。 |
|
函数的不一致的批注:参数具有此实例的另一个批注。 |
|
函数的不一致的批注:参数具有此实例的另一个批注。 |
|
dynamic_cast<> () 在注释不支持 |
|
在该批注的语法错误在函数中,批注的 |
|
在一个条件批注的语法错误为内部批注找到 |
|
结果列表值必须为常量。 |
|
在注释的语法错误是在函数中找到的批注。 |
|
函数的参数,批注,则请与函数声明不一致。 |
|
对于功能,主管与函数声明不一致。 |
|
为 _Macro_value_ 的参数为 null |
|
对于符号, “首先找到资源,没有匹配的 “end |
|
对于符号, “end 找到资源,没有匹配的 “开始 |
|
格式字符串必须在前置条件 |
|
为函数,参数中的语法错误 |
|
为函数,在尾部附近的语法错误 |
|
为函数,在 _At_ () 批注 (无法识别的参数名) 中的语法错误 |
|
为函数,在 _At_ () 批注 (无效参数名) 中的语法错误 |
|
为功能:ReadableTo 或 WritableTo 没有限制规范作为参数 |
|
函数的批注的参数的实际数目包含多个外部 |
|
发送 null/notnull 在 deref 级别 0 对于功能是无意义的。 |
|
不兼容的类型表达式运算符的操作数 |
|
函数的第一个声明的未批注。 |
|
一个额外的 _Deref_ 运算符在注释中。 |
|
不明确的 _Deref_ 运算符在注释中。 |
|
找到了不正确放置的 _Notref_ 运算符应用于标记。 |
|
错误,则标记以查看后分析。 |
|
在参数的批注个用户已废弃的 |
|
在参数的批注个用户已废弃的 |
|
批注描述不是有条件地适用的情况。 |
|
批注描述动态值 (变量) 的位置不能用于此情况。 |
|
类型拥有一次性字段应为可释放的 |
|
正确声明事件处理程序 |
|
使用标记 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 |