Conjunto de reglas Reglas recomendadas mixtas

Las reglas recomendadas mixtas de Microsoft se centran en los problemas más graves y habituales de los proyectos de C++ compatibles con Common Language Runtime, incluidas posibles vulnerabilidades de seguridad, bloqueos de la aplicación y otros errores de diseño y lógica importantes. Este conjunto de reglas incluye todas las reglas del conjunto de reglas Reglas mínimas mixtas.

Incluya este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para los proyectos de C++ compatibles con Common Language Runtime.

Regla Descripción
C6001 Uso de la memoria sin inicializar
C6011 Desreferenciación de un puntero null
C6029 Uso de un valor sin comprobar
C6031 Valor devuelto omitido
C6053 Terminación en cero de la llamada
C6054 Falta la terminación cero
C6059 Concatenación incorrecta
C6063 Falta el argumento de cadena para la función de formato
C6064 Falta el argumento de entero para la función de formato
C6066 Falta el argumento de puntero para la función de formato
C6067 Falta el argumento de puntero de cadena para la función de formato
C6101 Devolución de memoria sin inicializar
C6200 El índice supera el valor máximo para el búfer
C6201 El índice supera el valor máximo para el búfer de pila
C6214 Cast HRESULT To BOOL no válido
C6215 Cast BOOL To HRESULT no válido
C6216 Compiler-Inserted Cast BOOL To HRESULT no válido
C6217 HRESULT Test With NOT no válido
C6220 HRESULT Compare To -1 no válido
C6226 HRESULT Assignment To -1 no válido
C6230 HRESULT Use As Boolean no válido
C6235 Constante distinta de cero con Logical-Or
C6236 Logical-Or con constante distinta de cero
C6237 Cero con Logical-And pierde efectos secundarios
C6242 Desenredado local forzado
C6248 Creación de DACL null
C6250 Descriptores de direcciones no preliminares
C6255 Uso sin protección de Alloca
C6258 Usar el subproceso de finalización
C6259 Código fallido en Bitwise-Or modificador limitado
C6260 Uso de aritmética de bytes
C6262 Uso excesivo de la pila
C6263 Uso del bucle Alloca In
C6268 Faltan paréntesis en la conversión
C6269 Desreferencia de puntero omitida
C6270 Falta el argumento float para la función de formato
C6271 Argumento adicional para la función de formato
C6272 Argumento no flotante para la función de formato
C6273 Argumento no entero para la función de formato
C6274 Argumento sin caracteres para la función de formato
C6276 Conversión de cadena no válida
C6277 Llamada no válida a CreateProcess
C6278 Error de coincidencia de Array-New Scalar-Delete
C6279 Error de coincidencia de Scalar-New Array-Delete
C6280 Error de coincidencia de Allocation-Deallocation de memoria
C6281 Prioridad de relación bit a bit
C6282 Asignación reemplaza la prueba
C6283 Error de coincidencia de Array-New Scalar-Delete primitivo
C6284 Argumento de objeto no válido para la función de formato
C6285 Logical-Or de constantes
C6286 Efectos secundarios que pierden distintos de cero Logical-Or
C6287 Prueba redundante
C6288 Inclusión mutua en Logical-And es False
C6289 Exclusión mutua en Logical-Or es True
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 Recuentos de bucles ascendentes desde el máximo
C6293 Recuentos de bucles descendentes desde el mínimo
C6294 El cuerpo del bucle nunca se ejecutó
C6295 Bucle infinito
C6296 Bucle solo ejecutado una vez
C6297 Resultado de la conversión de desplazamiento a un tamaño mayor
C6299 Comparación de campo de bits a booleano
C6302 Argumento de cadena de caracteres no válido para la función de formato
C6303 Argumento de cadena de caracteres anchos no válido para la función de formato
C6305 Error de coincidencia en el uso de size y count
C6306 Llamada incorrecta a función de argumento variable
C6308 Pérdida de realloc
C6310 Constante de filtro de excepciones no válida
C6312 Bucle de ejecución de continuación de excepciones
C6314 Prioridad de operador Or bit a bit
C6317 Complemento Not Not
C6318 Búsqueda continua de excepciones
C6319 Omisión por coma
C6324 Copia de cadena en lugar de comparación de cadenas
C6328 Error de coincidencia de tipo de argumento potencial
C6331 Marcas no válidas de VirtualFree
C6332 Parámetro VirtualFree no válido
C6333 Tamaño VirtualFree no válido
C6335 Manipulador de proceso de pérdida
C6381 Falta información de apagado
C6383 Saturación del búfer de Element-Count Byte-Count
C6384 División de tamaño del 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 de atributo no válida
C6501 Valores de propiedad de atributo en conflicto
C6503 Las referencias no pueden ser null
C6504 Null en valores que no son de puntero
C6505 MustCheck en valores void
C6506 Tamaño de búfer en valores que no son de puntero o matriz
C6508 Acceso de escritura en valores constantes
C6509 Return usado en condición previa
C6510 NullTerminated en valores que no son de puntero
C6511 MustCheck debe ser Yes o No
C6513 ElementSize sin tamaño de búfer
C6514 El tamaño del búfer supera el tamaño de la matriz
C6515 Tamaño de búfer en valores que no son de puntero
C6516 No hay propiedades del atributo
C6517 Tamaño válido en búfer no legible
C6518 Tamaño de escritura en búfer no modificable
C6522 Tipo de cadena de tamaño no válido
C6525 Cadena de tamaño no válida, ubicación inaccesible
C6527 Anotación no válida: la propiedad 'NeedsRelease' no se puede usar en valores de tipo void
C6530 Estilo de cadena de formato no reconocido
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álido: no se puede analizar la expresión
C6552 Valor Deref= o Notref= no válido: no se puede analizar la expresión
C6701 Este no es un valor Yes/No/Maybe válido
C6702 Este no es un valor de cadena
C6703 El valor no es un número
C6704 Error de expresión de anotación inesperado
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 la anotación
C6995 No se pudo guardar el archivo de registro XML
C26100 Condición de carrera
C26101 No se puede usar correctamente la operación de interbloqueo
C26110 El autor de la llamada no pudo contener el bloqueo
C26111 El autor de la llamada no pudo liberar el bloqueo
C26112 El autor de la llamada no puede contener ningún bloqueo
C26115 No se pudo liberar el bloqueo
C26116 No se pudo adquirir o mantener el bloqueo
C26117 Liberación del bloqueo no retenido
C26140 Error de anotación SAL de simultaneidad
C28020 La expresión no es true en esta llamada
C28021 El parámetro que se va a anotar debe ser un puntero
C28022 Las clases de función de esta función no coinciden con las de la definición de tipo que se usa para definirlas.
C28023 La función que se asigna o se pasa debe tener una anotación de _Function_class_ para al menos una de las clases
C28024 El puntero de función al que se asigna tiene anotada la clase de función, que no está incluida en la lista de clases de función.
C28039 El tipo de parámetro real debería coincidir exactamente con el tipo
C28112 El acceso a una variable a la que siempre se accede mediante una función Interlocked se debe siempre realizar mediante una función Interlocked.
C28113 Accediendo a una variable local mediante una función Interlocked
C28125 Se debe llamar a la función desde un bloque try/except
C28137 El argumento variable debería ser una constante (literal)
C28138 El argumento constante debería ser variable
C28159 Considere la posibilidad de usar otra función.
C28160 Error (anotación)
C28163 Nunca se debería llamar 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 Desreferenciación de un puntero null. El puntero contiene el mismo valor NULL que otro puntero.
C28183 El argumento podría ser un valor y es una copia del valor encontrado en el puntero
C28193 La variable contiene un valor que se debe examinar
C28196 No se cumple el requisito. (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 la clase.
C28205 _Success_ o _On_failure_ usados en un contexto no válido
C28206 El operando izquierdo señala a una estructura, use "->"
C28207 El operando izquierdo es un struct, use '->'
C28209 La declaración del símbolo tiene una declaración en conflicto
C28220 Las anotaciones del 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 Se esperaba una expresión de puntero 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 los parámetros de atributo deben ser p1...p9
C28215 typefix no se puede aplicar a un parámetro que ya tenga un typefix
C28216 La anotación checkReturn solamente se aplica a las condiciones posteriores del parámetro de la función específica.
C28217 Para la función, el número de parámetros de la anotación no coincide con el encontrado en el archivo
C28218 Para el parámetro de la función, el parámetro de la anotación no coincide con el encontrado en el archivo
C28219 Se esperaba un miembro de enumeración para el parámetro de la anotación
C28220 Se esperaba una expresión de entero para el parámetro de la anotación
C28221 Se esperaba una expresión de cadena para el parámetro de la anotación
C28222 Se esperaba __yes, __no o __maybe para la anotación
C28223 No se encontró el token o identificador para la anotación, parámetro
C28224 La anotación requiere parámetros
C28225 No se encontró el número correcto de parámetros necesarios en la anotación
C28226 La anotación no puede ser un PrimOp (en la declaración actual)
C28227 La anotación no puede ser un PrimOp (consulte la declaración anterior)
C28228 Parámetro de anotación: no se puede usar un tipo en las anotaciones
C28229 La anotación no admite parámetros
C28230 El tipo de parámetro no tiene ningún miembro.
C28231 La anotación solo 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 actuar por sí sola como una anotación
C28236 La anotación no se puede usar en una expresión
C28237 La anotación del parámetro ya no se admite
C28238 La anotación del parámetro tiene más de un valor, stringValue y longValue Use paramn=xxx
C28239 La anotación del parámetro tiene el valor stringValue o longValue, y paramn=xxx. Use solo paramn=xxx
C28240 La anotación del parámetro tiene param2 pero no param1
C28241 La anotación para la función del parámetro no se reconoce
C28243 La anotación para la función del parámetro requiere más desreferenciaciones de las que permite el tipo real anotado
C28244 La anotación de la función tiene un parámetro o una anotación externa no analizable
C28245 La anotación para la función anota 'this' en una en una función no miembro
C28246 La anotación del parámetro para la función no coincide con el tipo del parámetro
C28250 Anotación incoherente de la función: la instancia anterior tiene un error.
C28251 Anotación incoherente de la función: esta instancia tiene un error.
C28252 Anotación incoherente de la función: el parámetro tiene otra anotación en esta instancia.
C28253 Anotación incoherente de la función: el parámetro tiene otra anotación en esta instancia.
C28254 dynamic_cast<>() no se admite en las 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 intrínseca
C28267 Se encontró un error de sintaxis de anotaciones en la función.
C28272 La anotación del parámetro de la función, al examinar su incoherencia con la declaración de la función
C28273 Para la función, las pistas son incoherentes con la declaración de la función
C28275 El parámetro para _Macro_value_ es null
C28279 Para el símbolo, se encontró un 'begin' sin un 'end' coincidente
C28280 Para el símbolo, se encontró un 'end' sin un 'begin' coincidente
C28282 Las cadenas de formato deben estar en las condiciones previas
C28285 Para la función, error de sintaxis en el 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 El valor null/notnull posterior en el nivel 0 de desreferenciación carece de sentido para la función.
C28300 Operandos de expresión de tipos no compatibles para el operador
C28301 No hay anotaciones para la primera declaración de la función.
C28302 Se encontró un operador _Deref_ adicional en la anotación.
C28303 Se encontró un operador _Deref_ ambiguo en la anotación.
C28304 Se encontró un operador _Notref_ mal colocado aplicado al token.
C28305 Se descubrió un error al analizar un token.
C28306 La anotación en el parámetro es obsolescente
C28307 La anotación en el parámetro es obsolescente
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 Declarar los controladores de evento correctamente
CA1016 Marcar los ensamblados con AssemblyVersionAttribute
CA1033 Los tipos secundarios deben poder llamar a los métodos de interfaz
CA1049 Los tipos que poseen recursos nativos deben ser descartables
CA1060 Mover P/Invokes a la clase NativeMethods
CA1061 No ocultar métodos de clase base
CA1063 Implementar IDisposable correctamente
CA1065 No producir excepciones en ubicaciones inesperadas
CA1301 Evitar los aceleradores duplicados
CA1400 Debe haber 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 a través de COM
CA1404 Llamar a GetLastError inmediatamente después de P/Invoke
CA1405 Los tipos base de tipos visibles a través de COM deben ser visibles a través de COM
CA1410 Los métodos de registro COM deben coincidir
CA1415 Declarar elementos P/Invoke correctamente
CA1821 Quitar finalizadores vacíos
CA1900 Los campos de tipo de valor deben ser portátiles
CA1901 Las declaraciones P/Invoke deben ser portátiles
CA2002 No bloquear objetos con identidad débil
CA2100 Revisar consultas SQL para comprobar si tienen vulnerabilidades de seguridad
CA2101 Especificar serialización en argumentos de cadena P/Invoke
CA2108 Revisar la seguridad declarativa en los tipos de valores
CA2111 Los punteros no deben estar visibles
CA2112 Los tipos seguros no deben exponer campos
CA2114 La seguridad del método debe 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 invalidaciones deben ser idénticas a la base
CA2124 Incluir cláusulas finally vulnerables en un bloque try externo
CA2126 Las peticiones de vínculos de tipos 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 al invalidar métodos base
CA2137 Los métodos transparentes deben contener solo IL que se pueda 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 Reiniciar para mantener los detalles de la pila
CA2202 No usar Dispose varias veces en objetos
CA2207 Inicializar campos estáticos de tipo de valor insertados
CA2212 No marcar los componentes con servicio como WebMethod
CA2213 Los campos descartables deben ser descartables
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 equals al invalidar ValueType.Equals
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 métodos de serialización correctamente
CA2240 Implementar ISerializable correctamente
CA2241 Proporcionar argumentos correctos a los métodos de formato
CA2242 Comprobar NaN correctamente