Compartir a través de


Conjunto de reglas Reglas recomendadas mixtas

Las reglas mixtas recomendadas de Microsoft se centran en los problemas más graves y habituales de los proyectos de C++ compatibles con Common Language Runtime, incluyendo posibles vulnerabilidades de seguridad, bloqueos de la aplicación y otros errores importantes de diseño y lógica.Debe incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos de C++ compatibles con Common Language Runtime.Este conjunto de reglas está diseñado para configurarse con Visual Studio Professional y versiones posteriores.

Regla

Descripción

C6001

Usar la Memoria sin inicializar.

C6011

Desreferenciar el puntero nulo.

C6029

Uso del valor sin comprobar.

C6031

Valor devuelto omitido

C6053

Terminación en cero de la llamada

C6054

Falta de terminación en cero

C6059

Concatenación incorrecta

C6063

Argumento de cadena que falta para dar formato a la función

C6064

Argumento entero ausente para dar formato a la función

C6066

Argumento puntero ausente para dar formato a la función

C6067

Argumento de puntero de cadena ausente para dar formato a la función

C6101

Devolver la memoria no inicializada

C6200

El índice supera el máximo del búfer

C6201

El índice supera el máximo del búfer de pila

C6214

Conversión no válida HRESULT a BOOL

C6215

Conversión no válida BOOL a HRESULT

C6216

Conversión insertada por compilador no válida BOOL a HRESULT

C6217

Prueba HRESULT no válida con NOT

C6220

HRESULT no válido en comparación con -1

C6226

Asignación no válida de HRESULT cómo -1

C6230

Uso no válido de HRESULT como booleano

C6235

Constante distinta de cero con operador lógico Or

C6236

Operador lógico Or con constante distinta de cero

C6237

Cero con operador lógico AND pierde efectos secundarios

C6242

Desenredo local forzado

C6248

Crear una DACL Nula

C6250

Descriptores inéditos de dirección

C6255

Uso desprotegido de Alloca

C6258

Usar el subproceso finalizar

C6259

Código no alcanzado en interruptor limitado por operador en el nivel de bits Or

C6260

Uso de la Aritmética de Byte

C6262

Uso excesivo de pila

C6263

Usar Alloca en bucle

C6268

Faltan paréntesis en la conversión

C6269

Puntero de desreferenciación omitido

C6270

Falta el argumento Float para dar formato ala función

C6271

Argumento adicional para dar formato a la función

C6272

Argumento no Float para dar formato a la función

C6273

Argumento no Entero para dar formato a la función

C6274

Argumento no Carácter para dar formato a la función

C6276

Conversión no válida de cadena

C6277

Llamada no válida de CreateProcess

C6278

No coincidencia de Matriz-Nuevo Escalar-Eliminar

C6279

No coincidencia de Escalar-Nueva Matriz-Eliminar

C6280

No coincidencia de Asignación-Desasignación de memoria

C6281

Precedencia de la relación de operador en el nivel de bits

C6282

Asignación remplaza prueba

C6283

Error de coincidencia en Matriz Primitiva-Nuevo Escalar-Eliminar

C6284

Argumento objeto no válido para dar formato a la función

C6285

Operador lógico Or de constantes

C6286

Operador lógico Or distinto de cero que pierde efectos secundarios

C6287

Prueba redundante

C6288

Inclusión mutua del operador lógico AND es falsa

C6289

La exclusión mutua sobre el operador lógico or es verdadera

C6290

Prioridad entre operadores NOT lógico y AND bit a bit

C6291

Prioridad entre operadores NOT lógico y OR bit a bit

C6292

Recuento de un máximo de bucles

C6293

Recuento de un mínimo de bucles

C6294

Cuerpo del bucle nunca ejecutado

C6295

Bucle infinito

C6296

Bucle ejecutado una vez

C6297

Resultado de la conversión con desplazamiento a un mayor tamaño

C6299

Campo de bits a comparación booleana

C6302

Argumento de cadena de carácter no válido para dar formato a la función

C6303

Argumento de cadena de caracteres anchos no válido para dar formato a la función

C6305

Error de coincidencia en tamaño y recuento de uso

C6306

Llamada de función con argumento variable incorrecta

C6308

Pérdidas por Realloc

C6310

Constante no válida del filtro de excepciones

C6312

Excepción bucle de ejecución continuo

C6314

Precedencia del operador bit a bit Or

C6317

Complemento No No

C6318

Excepción continuar la búsqueda

C6319

Omitido por coma

C6324

Copia de la cadena en lugar de la comparación de la cadena

C6328

Error de coincidencia de tipo de argumento potencial

C6331

Marcas VirtualFree no válidas

C6332

Parámetro no válido VirtualFree

C6333

Tamaño no válido VirtualFree

C6335

Controlador del proceso con pérdidas

C6381

Falta de información de apagado

C6383

Saturación del búfer de recuento de elemento y recuento de bytes

C6384

División de tamaño de puntero

C6385

Saturación de lectura

C6386

Saturación de escritura

C6387

Valor de parámetro no válido

C6388

Valor de parámetro no válido

C6500

Propiedad no válida del atributo

C6501

Valores de propiedad de atributo en conflicto

C6503

Las referencias no pueden ser nulas

C6504

NULL en un no Puntero

C6505

MustCheck en vacío

C6506

Tamaño de búfer en no Puntero o matriz

C6507

Desigualdad Null en desreferenciación cero

C6508

Acceso de escritura en constante

C6509

Retorno utilizado en condición previa

C6510

Null finalizado en no Puntero

C6511

La propiedad MustCheck debe ser Sí o No

C6513

Tamaño de elemento sin tamaño de búfer

C6514

El tamaño de búfer supera el tamaño de la matriz

C6515

Tamaño de búfer en no Puntero

C6516

Ninguna propiedad en el atributo

C6517

Tamaño válido en búfer no Legible

C6518

Tamaño de escritura en búfer no modificable

C6519

Anotación inválida: el valor de propiedad 'NeedsRelease' debe ser Sí o No.

C6521

Desreferenciación de la cadena de tamaño no válido

C6522

Tipo tamaño de cadena no válido

C6523

Parámetro de cadena de tamaño no válido

C6525

Ubicación inalcanzable de la cadena de tamaño no válida

C6526

Tipo del búfer del tamaño de cadena no válido

C6527

Anotación no válida: La propiedad 'NeedsRelease' no se puede utilizar en valores de tipo void

C6530

Estilo desconocido del formato de la cadena

C6540

El uso de anotaciones de atributo en esta función invalidará todas las anotaciones __declspec existentes

C6551

Especificación de tamaño no válida: expresión no analizable

C6552

Deref= no válida o Notref=: expresión no analizable

C6701

Este no es un valor Sí/No/Quizás válido

C6702

El valor no es un valor de cadena

C6703

El valor no es un número

C6704

Error inesperado en la expresión de anotación

C6705

El número esperado de argumentos para la anotación no coincide con el número real de argumentos para la anotación

C6706

Error inesperado de Anotación para anotaciones

C6995

No se pudo guardar el archivo de registro XML

C26100

Condición de carrera

C26101

La operación entrelazada no se usó correctamente

C26110

El llamador no puede mantener el bloqueo

C26111

El llamador no puede liberar el bloqueo

C26112

El llamador no puede mantener ningún bloqueo

C26115

Error al liberar el bloqueo

C26116

Error al adquirir o mantener el bloqueo

C26117

Liberar el bloqueo no retenido

C26140

Error de anotación SAL de simultaneidad

C28020

La expresión no es verdadera en esta llamada.

C28021

El parámetro anotado debe ser un puntero

C28022

Las clases de función de esta función no coinciden con las clases de función del typedef usado para definirla.

C28023

La función que se va a asignar o pasar debe tener una anotación _Function_class_ para al menos una de las clases

C28024

El puntero a función al que se asigna tiene anotada la clase de función, no incluida en la lista de clases de funciones.

C28039

El tipo del parámetro actual debe coincidir exactamente con el tipo

C28112

A una variable a la que se tiene acceso mediante una función Interlocked siembre se debe obtener acceso mediante una función Interlocked.

C28113

Acceso a una variable local mediante una función Interlocked

C28125

Debe llamarse a la función desde un bloque try/except

C28137

La variable de argumento debería ser una constante (literal)

C28138

Los argumentos constantes deberían ser variables

C28159

Considere utilizar otra función en su lugar.

C28160

anotación Error

C28163

No debe llamarse nunca a la función desde un bloque try/except

C28164

El argumento se está pasando a una función que espera un puntero a un objeto (no un puntero a un puntero)

C28182

Desreferenciando el puntero NULL.El puntero contiene el mismo valor NULL que otro puntero.

C28183

El argumento no puede ser un valor, y es una copia del valor encontrado en el puntero

C28193

La variable contiene un valor que debe ser examinado

C28196

El requisito no se cumple. (La expresión no se evalúa como true.)

C28202

Referencia no válida a un miembro no estático.

C28203

Referencia ambigua a un miembro de clase.

C28205

Se usó _Success_ u _On_failure_ en un contexto no válido

C28206

Puntos izquierdo del operando un struct, use “->”

C28207

El operando izquierdo es un struct, use '.'

C28209

La declaración del símbolo tiene una declaración en conflicto

C28210

Las anotaciones para el contexto _on_failure_ no deben estar en un contexto previo explícito:

C28211

Se esperaba un nombre de contexto estático para SAL_context.

C28212

Expresión de puntero esperada para la anotación

C28213

La anotación _Use_decl_annotations_ se debe usar para hacer referencia, sin modificación, a una declaración anterior.

C28214

Los nombres de atributo de parámetros deben ser p1...p9

C28215

typefix no se puede aplicar a un parámetro que ya tenga un typefix

C28216

La anotación de checkReturn solicita solo a las condiciones posteriores el parámetro de la función específica.

C28217

Para la función, el número de parámetros para la anotación no coincide con el encontrado en el archivo.

C28218

Para el parámetro de la función, el parámetro de anotación no coincide con el que se ha encontrado en el archivo

C28219

Se esperaba un miembro de enumeración para el parámetro de la anotación

C28220

Expresión de entero esperada para anotación el parámetro en la anotación

C28221

Expresión de cadena esperada para el parámetro en la anotación

C28222

__si, __no, or __quizás esperado para la anotación

C28223

No se encontró el token o identificador esperado para el parámetro de la anotación

C28224

La anotación requiere parámetros

C28225

No se encontró el número correcto de parámetros requeridos en la anotación

C28226

La anotación no puede ser también un elemento PrimOp (en la declaración actual)

C28227

La anotación no puede ser también un elemento PrimOp (ver declaración anterior)

C28228

Parámetro de anotación: no puede utilizar tipos en anotaciones

C28229

La anotación no admite parámetros.

C28230

El tipo de parámetro no tiene ningún miembro.

C28231

La anotación sólo es válida en la matriz

C28232

pre, post o deref no se aplican a ninguna anotación

C28233

pre, post o deref se aplican a un bloque

C28234

La expresión __at no se aplica a la función actual

C28235

La función no puede usarse de forma independiente como anotación

C28236

La anotación no se puede usar en una expresión

C28237

Ya no se admite la anotación en el parámetro

C28238

La anotación en el parámetro tiene más de un elemento value, stringValue y longValue.Use paramn=xxx

C28239

la anotación en el parámetro tiene tanto un elemento value como stringValue o longValue, además de paramn=xxx.Use solamente paramn=xxx.

C28240

La anotación en el parámetro tiene un elemento param2 pero no param1

C28241

La anotación para la función de parámetro no se reconoce

C28243

La anotación de la función en el parámetro requiere más desreferencias de las que permite el tipo anotado real.

C28244

La anotación de la función tiene un parámetro o anotación externa que no se puede analizar.

C28245

La anotación de la función anota 'this' en una función no miembro.

C28246

La anotación de parámetro para función no coincide con el tipo de parámetro

C28250

Anotación incoherente para la función: la instancia anterior tiene un error.

C28251

Anotación incoherente para la función: esta instancia tiene un error.

C28252

Anotación incoherente para la función: el parámetro tiene otras anotaciones en esta instancia.

C28253

Anotación incoherente para la función: el parámetro tiene otras anotaciones en esta instancia.

C28254

dynamic_cast<>() no se admite en anotaciones

C28262

Se encontró un error de sintaxis de anotación en la función, para la anotación

C28263

Se encontró un error de sintaxis en una anotación condicional para la anotación de tipo intrínseco

C28264

Los valores de las listas de resultados deben ser constantes.

C28267

Se encontró un error de sintaxis de anotaciones en la función para la anotación.

C28272

El parámetro de la anotación de la función al examinar no es coherente con la declaración de la función

C28273

Para la función, las pistas no son coherentes con la declaración de la función

C28275

El parámetro para _Macro_value_ es nulo

C28279

Para el símbolo, se encontró un elemento 'begin' sin el elemento 'end' correspondiente

C28280

Para el símbolo se encontró un elemento 'end' sin el elemento 'begin' correspondiente

C28282

Las cadenas de formato deben estar en las condiciones previas

C28285

Para la función, error de sintaxis en parámetro

C28286

Para la función, error de sintaxis cerca del final

C28287

Para la función, error de sintaxis en la anotación _At_() (nombre de parámetro no reconocido)

C28288

Para la función, error de sintaxis en la anotación _At_() (nombre de parámetro no válido)

C28289

Para la función: ReadableTo o WritableTo no tenían una especificación de límite como parámetro

C28290

La anotación de la función contiene más valores External que el número real de parámetros

C28291

null/notnull posterior en el nivel 0 de desreferenciación carece de sentido para la función.

C28300

Los operandos de expresión de tipos no son compatibles para el operador

C28301

Ninguna anotación para la primera declaración de la función.

C28302

Se encontró un operador adicional de _Deref_ en la anotación.

C28303

Se encontró un operador ambiguo de _Deref_ en la anotación.

C28304

Se encontró un operador incorrectamente colocado de _Notref_ aplicado al token.

C28305

Se detectó un error mientras analizaba un token.

C28306

La anotación en parámetro es obsoleta

C28307

La anotación en parámetro es obsoleta

C28350

La anotación describe una situación no aplicable de forma condicional.

C28351

La anotación describe dónde no se puede usar un valor dinámico (una variable) en la condición.

CA1001

Los tipos que poseen campos descartables deben ser descartables

CA1009

Declare los controladores de evento correctamente

CA1016

Marcar los ensamblados con AssemblyVersionAttribute

CA1033

Los tipos secundarios deberían poder llamar a los métodos de interfaz

CA1049

Los tipos que poseen recursos nativos deben ser descartables

CA1060

Mueva P/Invokes a la clase NativeMethods

CA1061

No oculte métodos de clases base

CA1063

Implemente IDisposable correctamente

CA1065

No producir excepciones en ubicaciones inesperadas

CA1301

Evitar aceleradores duplicados

CA1400

Deben existir puntos de entrada P/Invoke

CA1401

Los elementos P/Invoke no deben estar visibles

CA1403

Los tipos de diseño automático no deben ser visibles para COM

CA1404

Llame a GetLastError inmediatamente después de P/Invoke

CA1405

Los tipos base de tipos visibles para COM deben ser visibles para COM

CA1410

Los métodos de registro COM se deben adjuntar

CA1415

Declare los elementos P/Invoke correctamente

CA1821

Quitar los finalizadores vacíos

CA1900

Los campos de tipos de valor deberían ser portátiles

CA1901

Las declaraciones P/Invoke deben ser portátiles

CA2002

No bloquear objetos con identidad débil

CA2100

Revisar las consultas SQL en busca de vulnerabilidades de seguridad

CA2101

Especifique cálculo de referencias para argumentos de cadena P/Invoke

CA2108

Revisar la seguridad declarativa en los tipos de valor

CA2111

Los punteros no deberían estar visibles

CA2112

Los tipos seguros no deberían exponer campos

CA2114

La seguridad del método debería ser un supraconjunto del tipo

CA2116

Los métodos APTCA deben llamar solo a métodos APTCA

CA2117

Los tipos APTCA solo amplían tipos base APTCA

CA2122

No exponer indirectamente métodos con peticiones de vínculos

CA2123

Las peticiones de vínculos de remplazo deberían ser idénticas a la base

CA2124

Incluir cláusulas Finally vulnerables en un bloque Try externo

CA2126

Las peticiones de tipo vínculos requieren peticiones de herencias

CA2131

Los tipos críticos para la seguridad no pueden participar en la equivalencia de tipos

CA2132

Los constructores predeterminados deben ser al menos tan críticos para la seguridad como los constructores predeterminados de tipo base.

CA2133

Los delegados deben enlazarse a métodos con una transparencia coherente

CA2134

Los métodos deben mantener una transparencia coherente cuando remplazan métodos base

CA2137

Los métodos transparentes deben contener solo IL que se puedan comprobar

CA2138

Los métodos transparentes no deben llamar a métodos con el atributo SuppressUnmanagedCodeSecurity

CA2140

El código transparente no debe hacer referencia a elementos críticos para la seguridad

CA2141

Los métodos transparentes no deben satisfacer LinkDemands

CA2146

Los tipos deben ser al menos tan críticos para la seguridad como sus interfaces y tipos base.

CA2147

Los métodos transparentes no pueden usar aserciones de seguridad

CA2149

Los métodos transparentes no deben llamar a código nativo

CA2200

Iniciar de nuevo para preservar los detalles de la pila

CA2202

No desechar objetos varias veces

CA2207

Inicializar campos estáticos de tipo de valor alineados

CA2212

No marcar los componentes servidos como WebMethod

CA2213

Los campos desechables se deben desechar

CA2214

No llamar a métodos reemplazables en constructores

CA2216

Los tipos descartables deben declarar el finalizador

CA2220

Los finalizadores deben llamar al finalizador de la clase base

CA2229

Implementar constructores de serialización

CA2231

Sobrecargar el operador de igualdad al remplazar el tipo de valor de igualdad

CA2232

Marcar puntos de entrada de Windows Forms con STAThread

CA2235

Marcar todos los campos no serializables

CA2236

Llamar a métodos de clase base en tipos ISerializable

CA2237

Marcar los tipos ISerializable con SerializableAttribute

CA2238

Implementar los métodos de serialización de forma correcta

CA2240

Implementar ISerializable correctamente

CA2241

Proporcionar argumentos correctos a los métodos de formato

CA2242

Prueba para NaN correcta