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 |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de