“混合建议规则”规则集

Microsoft 组合建议的 " 规则集重点解决最常见,并且在支持您的 C++ 项目的重要问题公共语言运行时 (clr),包括潜在的安全漏洞,应用程序崩溃和其他重要的逻辑和设计错误。 在任何自定义规则应加入此规则集为支持公共语言运行时的 C++ 项目创建。 方式配置此 ruleset 使用 Visual Studio 专业版和更高版本。

规则

说明

C6001

使用未初始化的内存

C6011

取消引用 null 指针

C6029

对未经检查的值的使用

C6031

返回忽略的值

C6053

零终止从调用

C6054

零终止缺少

C6059

串联错误

C6063

格式设置功能的缺少字符串参数

C6064

格式设置功能的缺少整数参数

C6066

格式设置功能的丢失的指针参数

C6067

格式设置功能的缺少字符串指针参数

C6101

返回未初始化的内存

C6200

索引超出缓冲区的最大数量

C6201

索引超出堆栈缓冲区的最大数量

C6214

到 BOOL 的无效强制转换 HRESULT

C6215

为 HRESULT 的无效强制转换 BOOL

C6216

为 HRESULT 的无效编译器插入的转换 BOOL

C6217

无效的 HRESULT 测试使用没有

C6220

无效的 HRESULT 比较为 -1

C6226

无效的 HRESULT 分配给 -1

C6230

无效的 HRESULT 使用如布尔值

C6235

非零常数。

C6236

逻辑或与非零常数

C6237

零与逻辑和丢失副作用

C6242

展开局部堆栈强制

C6248

创建空 DACL

C6250

未释放的地址描述符

C6255

对 Alloca 的不受保护的使用

C6258

使用 " 终止线程

C6259

死代码按位或限位开关

C6260

为字节算法中使用

C6262

额外的堆栈使用率

C6263

在循环中使用 Alloca

C6268

在转换中缺少括号

C6269

忽略的指针取消引用

C6270

格式设置功能的缺少的参数

C6271

格式设置功能的额外参数

C6272

格式设置功能的非浮点参数

C6273

非整数格式设置功能的 Argumen

C6274

格式设置功能的非字符参数

C6276

无效字符串转换

C6277

无效 CreateProcess 调用

C6278

数组新的标量删除不匹配

C6279

标量新数组删除不匹配

C6280

内存分配释放不匹配

C6281

按位关系优先级

C6282

分配替换测试

C6283

原始数组新的标量删除不匹配

C6284

对布局功能的对象参数无效

C6285

常数。

C6286

非零逻辑或丢失的副作用

C6287

冗余测试

C6288

相互包括逻辑和为 false

C6289

互斥为 true。

C6290

逻辑不按位与优先级

C6291

逻辑不按位或优先级

C6292

循环从最大值往上计数

C6293

循环从最小值往下计数

C6294

执行的循环体

C6295

无限循环

C6296

仅执行一次的循环

C6297

移位的结果被强制转换为更大

C6299

为布尔值比较的 Bitfield

C6302

格式设置功能的无效字符字符串参数

C6303

格式设置功能的无效的宽字符字符串参数

C6305

不匹配的大小和计数使用

C6306

不正确的变量参数函数调用

C6308

Realloc 泄漏

C6310

非法异常筛选器常数

C6312

异常继续执行循环

C6314

按位或优先级

C6317

不是补集

C6318

异常继续搜索

C6319

忽略由逗号

C6324

而不是字符串的字符串复制比较

C6328

潜在的参数类型不匹配

C6331

VirtualFree 无效标志

C6332

VirtualFree 参数无效

C6333

VirtualFree 无效范围

C6335

处理句柄泄漏

C6381

关闭信息缺少

C6383

元素计数字节计数缓冲区溢出

C6384

指针大小除法

C6385

读取超过

C6386

编写超过

C6387

参数值无效

C6388

参数值无效

C6500

无效的特性属性

C6501

冲突的属性

C6503

引用不能为空

C6504

在非指针的空

C6505

在无效的 MustCheck

C6506

在非指针或数组的缓冲区大小

C6507

在取消引用零的空不匹配

C6508

常数中编写

C6509

返回使用在前置条件

C6510

在非指针终止 null

C6511

MustCheck 必须是/否

C6513

没有缓冲区大小的元素的大小

C6514

缓冲区大小超过数组大小

C6515

在非指针的缓冲区大小

C6516

在属性上无特性

C6517

在不可读的缓冲区的有效范围

C6518

在非可写缓冲区的可写的大小

C6519

无效的批注:“NeedsRelease 属性的值必须是/否

C6521

无效范围字符串取消引用

C6522

无效范围字符串类型

C6523

无效字符串参数范围

C6525

无效范围字符串无法访问的位置

C6526

无效范围字符串缓冲区类型

C6527

无效的批注:“NeedsRelease 属性在无效类型的值不能使用

C6530

无法识别的格式字符串样式

C6540

使用此功的属性批注将无效其所有现有 __declspec 批注

C6551

大小规格无效:parsable 的表达式

C6552

无效 Deref= 或 Notref=:parsable 的表达式

C6701

该值不+一有效是/否/可能值

C6702

该值不是字符串值

C6703

该值不是数字

C6704

意外的批注表达式错误

C6705

参数的预期数字的批注不匹配参数的实际数目的批注

C6706

批注的意外的批注错误

C6995

未能保存 XML 日志文件

C26100

争用条件

C26101

无法正确地使用互锁操作

C26110

持有锁的调用方失败

C26111

释放锁的调用方失败

C26112

调用方不能保存任何锁

C26115

未能释放锁

C26116

无法获得或持有锁

C26117

释放锁 unheld

C26140

并发 SAL 注释错误

C28020

该表达式不是真正的此调用

C28021

批注的参数必须是指针

C28022

此函数的类不与用于 typedef 的功能类定义。

C28023

分配或传递的函数应至少有一个的一个 _Function_class_ 批注类

C28024

分配到的函数指针说明与功能类,在函数中包含课程表。

C28039

实际参数的类型应完全匹配该类型

C28112

通过一个互锁的功能捕获的变量必须传递一个互锁的函数始终访问。

C28113

访问局部变量传递一个互锁的功能

C28125

必须调用函数从一次尝试的内部/除块

C28137

可变参数应为 (文本) 常数

C28138

常数参数应为可变

C28159

考虑使用另一个函数。

C28160

错误批注

C28163

不应调用函数从一次尝试的内部/除块

C28164

传递给需要指向对象的指针的函数 (指向的不是指针)

C28182

取消引用 NULL 指针。 指针包含与其他指针的 null 值。

C28183

参数可以是一个值,并在指针找到的值的副本

C28193

变量表示必须检查的值

C28196

该要求是不够的。 (该表达式不计算结果为 true。)

C28202

非法引用非静态成员

C28203

明确引用类成员。

C28205

用于一个非法上下文或 _On_failure_ 的 _Success_

C28206

左操作数指向结构,使用 “- >

C28207

左操作数是结构,使用 “”。

C28209

符号的声明一个具有冲突的说明

C28210

__on_failure 上下文的批注不能在显式之前上下文

C28211

为 SAL_context 预期的静态上下文名称

C28212

批注预期的指针表达式

C28213

必须使用 _Use_decl_annotations_ 批注,引用,而无需修改,一个以前的声明。

C28214

属性参数名称必须是 p1… p9

C28215

typefix 不能应用于已具有 typefix 的参数

C28216

checkReturn 批注只应用于特定函数参数的后置条件。

C28217

为函数,参数数目到批注的不匹配的所有文件

C28218

指向函数 paramteer,批注的参数不匹配的所有文件

C28219

枚举的成员批注应在该批注的参数

C28220

整数表达式批注应在该批注的参数

C28221

为批注的参数所需的字符串表达式

C28222

__yes、批注预期的 __no 或 __maybe

C28223

未找到预期的标记/标识符批注的参数,

C28224

批注需要参数

C28225

没有看到需的正确数目的参数批注中

C28226

批注不能同时是 PrimOp (在当前声明)

C28227

批注不能同时是 PrimOp (请参见前面声明)

C28228

批注参数:不能使用类型批注

C28229

批注不支持参数

C28230

参数的类型没有成员。

C28231

批注只适用于数组

C28232

之前,后置或 deref 未应用于任何批注

C28233

之前,后置或 deref 会应用于块

C28234

__at 表达式不适用于当前函数

C28235

函数不能单独并肩作战与批注

C28236

批注将不能在表达式

C28237

在参数的批注不再支持

C28238

在参数的批注具有多个值、 stringValue 和 longValue。 使用 paramn=xxx

C28239

在参数的批注具有两个值、 stringValue 或 longValue;并 paramn=xxx。 仅使用 paramn=xxx

C28240

在参数的批注没有 param2,但 param1

C28241

函数的批注参数中不识别

C28243

函数的批注在参数比批注的实际类型允许需要更多的取消引用

C28244

函数的批注具有一个 unparseable 参数/外部批注

C28245

函数的批注说明 “this " 在非成员函数

C28246

函数的参数批注不匹配参数的类型

C28250

函数的不一致的批注:前面的实例有错误。

C28251

函数的不一致的批注:此实例都有一个错误。

C28252

函数的不一致的批注:参数具有此实例的另一个批注。

C28253

函数的不一致的批注:参数具有此实例的另一个批注。

C28254

dynamic_cast<> () 在注释不支持

C28262

在该批注的语法错误在函数中,批注的

C28263

在一个条件批注的语法错误为内部批注找到

C28264

结果列表值必须为常量。

C28267

在注释的语法错误是在函数中找到的批注。

C28272

函数的参数,批注,则请与函数声明不一致。

C28273

对于功能,主管与函数声明不一致。

C28275

为 _Macro_value_ 的参数为 null

C28279

对于符号, “首先找到资源,没有匹配的 “end

C28280

对于符号, “end 找到资源,没有匹配的 “开始

C28282

格式字符串必须在前置条件

C28285

为函数,参数中的语法错误

C28286

为函数,在尾部附近的语法错误

C28287

为函数,在 _At_ () 批注 (无法识别的参数名) 中的语法错误

C28288

为函数,在 _At_ () 批注 (无效参数名) 中的语法错误

C28289

为功能:ReadableTo 或 WritableTo 没有限制规范作为参数

C28290

函数的批注的参数的实际数目包含多个外部

C28291

发送 null/notnull 在 deref 级别 0 对于功能是无意义的。

C28300

不兼容的类型表达式运算符的操作数

C28301

函数的第一个声明的未批注。

C28302

一个额外的 _Deref_ 运算符在注释中。

C28303

不明确的 _Deref_ 运算符在注释中。

C28304

找到了不正确放置的 _Notref_ 运算符应用于标记。

C28305

错误,则标记以查看后分析。

C28306

在参数的批注个用户已废弃的

C28307

在参数的批注个用户已废弃的

C28350

批注描述不是有条件地适用的情况。

C28351

批注描述动态值 (变量) 的位置不能用于此情况。

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