Conjunto de reglas Reglas recomendadas nativas
Las reglas nativas recomendadas se centran en los problemas más graves y habituales del código nativo, incluidas posibles vulnerabilidades de seguridad y bloqueos de la aplicación. Debe incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos nativos. Este conjunto de reglas está diseñado para funcionar con Visual Studio Professional y versiones posteriores.
Regla |
Descripción |
---|---|
Usar la Memoria sin inicializar. |
|
Desreferenciar el puntero nulo. |
|
Uso del valor sin comprobar. |
|
Valor devuelto omitido |
|
Terminación en cero de la llamada |
|
Falta de terminación en cero |
|
Concatenación incorrecta |
|
Argumento de cadena que falta para dar formato a la función |
|
Argumento entero ausente para dar formato a la función |
|
Argumento puntero ausente para dar formato a la función |
|
Argumento de puntero de cadena ausente para dar formato a la función |
|
Devolver la memoria no inicializada |
|
El índice supera el máximo del búfer |
|
El índice supera el máximo del búfer de pila |
|
Conversión no válida HRESULT a BOOL |
|
Conversión no válida BOOL a HRESULT |
|
Conversión insertada por compilador no válida BOOL a HRESULT |
|
Prueba HRESULT no válida con NOT |
|
HRESULT no válido en comparación con -1 |
|
Asignación no válida de HRESULT cómo -1 |
|
Uso no válido de HRESULT como booleano |
|
Constante distinta de cero con operador lógico Or |
|
Operador lógico Or con constante distinta de cero |
|
Cero con operador lógico AND pierde efectos secundarios |
|
Desenredo local forzado |
|
Crear una DACL Nula |
|
Descriptores inéditos de dirección |
|
Uso desprotegido de Alloca |
|
Usar el subproceso finalizar |
|
Código no alcanzado en interruptor limitado por operador en el nivel de bits Or |
|
Uso de la Aritmética de Byte |
|
Uso excesivo de pila |
|
Usar Alloca en bucle |
|
Faltan paréntesis en la conversión |
|
Puntero de desreferenciación omitido |
|
Falta el argumento Float para dar formato ala función |
|
Argumento adicional para dar formato a la función |
|
Argumento no Float para dar formato a la función |
|
Argumento no Entero para dar formato a la función |
|
Argumento no Carácter para dar formato a la función |
|
Conversión no válida de cadena |
|
Llamada no válida de CreateProcess |
|
No coincidencia de Matriz-Nuevo Escalar-Eliminar |
|
No coincidencia de Escalar-Nueva Matriz-Eliminar |
|
No coincidencia de Asignación-Desasignación de memoria |
|
Precedencia de la relación de operador en el nivel de bits |
|
Asignación remplaza prueba |
|
Error de coincidencia en Matriz Primitiva-Nuevo Escalar-Eliminar |
|
Argumento objeto no válido para dar formato a la función |
|
Operador lógico Or de constantes |
|
Operador lógico Or distinto de cero que pierde efectos secundarios |
|
Prueba redundante |
|
Inclusión mutua del operador lógico AND es falsa |
|
La exclusión mutua sobre el operador lógico or es verdadera |
|
Prioridad entre operadores NOT lógico y AND bit a bit |
|
Prioridad entre operadores NOT lógico y OR bit a bit |
|
Recuento de un máximo de bucles |
|
Recuento de un mínimo de bucles |
|
Cuerpo del bucle nunca ejecutado |
|
Bucle infinito |
|
Bucle ejecutado una vez |
|
Resultado de la conversión con desplazamiento a un mayor tamaño |
|
Campo de bits a comparación booleana |
|
Argumento de cadena de carácter no válido para dar formato a la función |
|
Argumento de cadena de caracteres anchos no válido para dar formato a la función |
|
Error de coincidencia en tamaño y recuento de uso |
|
Llamada de función con argumento variable incorrecta |
|
Pérdidas por Realloc |
|
Constante no válida del filtro de excepciones |
|
Excepción bucle de ejecución continuo |
|
Precedencia del operador bit a bit Or |
|
Complemento No No |
|
Excepción continuar la búsqueda |
|
Omitido por coma |
|
Copia de la cadena en lugar de la comparación de la cadena |
|
Error de coincidencia de tipo de argumento potencial |
|
Marcas VirtualFree no válidas |
|
Parámetro no válido VirtualFree |
|
Tamaño no válido VirtualFree |
|
Controlador del proceso con pérdidas |
|
Falta de información de apagado |
|
Saturación del búfer de recuento de elemento y recuento de bytes |
|
División de tamaño de puntero |
|
Saturación de lectura |
|
Saturación de escritura |
|
Valor de parámetro no válido |
|
Valor de parámetro no válido |
|
Propiedad no válida del atributo |
|
Valores de propiedad de atributo en conflicto |
|
Las referencias no pueden ser nulas |
|
NULL en un no Puntero |
|
MustCheck en vacío |
|
Tamaño de búfer en no Puntero o matriz |
|
Desigualdad Null en desreferenciación cero |
|
Acceso de escritura en constante |
|
Retorno utilizado en condición previa |
|
Null finalizado en no Puntero |
|
La propiedad MustCheck debe ser Sí o No |
|
Tamaño de elemento sin tamaño de búfer |
|
El tamaño de búfer supera el tamaño de la matriz |
|
Tamaño de búfer en no Puntero |
|
Ninguna propiedad en el atributo |
|
Tamaño válido en búfer no Legible |
|
Tamaño de escritura en búfer no modificable |
|
Anotación inválida: el valor de propiedad 'NeedsRelease' debe ser Sí o No. |
|
Desreferenciación de la cadena de tamaño no válido |
|
Tipo tamaño de cadena no válido |
|
Parámetro de cadena de tamaño no válido |
|
Ubicación inalcanzable de la cadena de tamaño no válida |
|
Tipo del búfer del tamaño de cadena no válido |
|
Anotación no válida: La propiedad 'NeedsRelease' no se puede utilizar en valores de tipo void |
|
Estilo desconocido del formato de la cadena |
|
El uso de anotaciones de atributo en esta función invalidará todas las anotaciones __declspec existentes |
|
Especificación de tamaño no válida: expresión no analizable |
|
Deref= no válida o Notref=: expresión no analizable |
|
Este no es un valor Sí/No/Quizás válido |
|
El valor no es un valor de cadena |
|
El valor no es un número |
|
Error inesperado en la expresión de anotación |
|
El número esperado de argumentos para la anotación no coincide con el número real de argumentos para la anotación |
|
Error inesperado de Anotación para anotaciones |
|
No se pudo guardar el archivo de registro XML |
|
Condición de carrera |
|
La operación entrelazada no se usó correctamente |
|
El llamador no puede mantener el bloqueo |
|
El llamador no puede liberar el bloqueo |
|
El llamador no puede mantener ningún bloqueo |
|
Error al liberar el bloqueo |
|
Error al adquirir o mantener el bloqueo |
|
Liberar el bloqueo no retenido |
|
Error de anotación SAL de simultaneidad |
|
La expresión no es verdadera en esta llamada. |
|
El parámetro anotado debe ser un puntero |
|
Las clases de función de esta función no coinciden con las clases de función del typedef usado para definirla. |
|
La función que se va a asignar o pasar debe tener una anotación _Function_class_ para al menos una de las clases |
|
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. |
|
El tipo del parámetro actual debe coincidir exactamente con el tipo |
|
A una variable a la que se tiene acceso mediante una función Interlocked siembre se debe obtener acceso mediante una función Interlocked. |
|
Acceso a una variable local mediante una función Interlocked |
|
Debe llamarse a la función desde un bloque try/except |
|
La variable de argumento debería ser una constante (literal) |
|
Los argumentos constantes deberían ser variables |
|
Considere utilizar otra función en su lugar. |
|
anotación Error |
|
No debe llamarse nunca a la función desde un bloque try/except |
|
El argumento se está pasando a una función que espera un puntero a un objeto (no un puntero a un puntero) |
|
Desreferenciando el puntero NULL.El puntero contiene el mismo valor NULL que otro puntero. |
|
El argumento no puede ser un valor, y es una copia del valor encontrado en el puntero |
|
La variable contiene un valor que debe ser examinado |
|
El requisito no se cumple. (La expresión no se evalúa como true.) |
|
Referencia no válida a un miembro no estático. |
|
Referencia ambigua a un miembro de clase. |
|
Se usó _Success_ u _On_failure_ en un contexto no válido |
|
Puntos izquierdo del operando un struct, use “->” |
|
El operando izquierdo es un struct, use '.' |
|
La declaración del símbolo tiene una declaración en conflicto |
|
Las anotaciones para el contexto _on_failure_ no deben estar en un contexto previo explícito: |
|
Se esperaba un nombre de contexto estático para SAL_context. |
|
Expresión de puntero esperada para la anotación |
|
La anotación _Use_decl_annotations_ se debe usar para hacer referencia, sin modificación, a una declaración anterior. |
|
Los nombres de atributo de parámetros deben ser p1...p9 |
|
typefix no se puede aplicar a un parámetro que ya tenga un typefix |
|
La anotación de checkReturn solicita solo a las condiciones posteriores el parámetro de la función específica. |
|
Para la función, el número de parámetros para la anotación no coincide con el encontrado en el archivo. |
|
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 |
|
Se esperaba un miembro de enumeración para el parámetro de la anotación |
|
Expresión de entero esperada para anotación el parámetro en la anotación |
|
Expresión de cadena esperada para el parámetro en la anotación |
|
__si, __no, or __quizás esperado para la anotación |
|
No se encontró el token o identificador esperado para el parámetro de la anotación |
|
La anotación requiere parámetros |
|
No se encontró el número correcto de parámetros requeridos en la anotación |
|
La anotación no puede ser también un elemento PrimOp (en la declaración actual) |
|
La anotación no puede ser también un elemento PrimOp (ver declaración anterior) |
|
Parámetro de anotación: no puede utilizar tipos en anotaciones |
|
La anotación no admite parámetros. |
|
El tipo de parámetro no tiene ningún miembro. |
|
La anotación sólo es válida en la matriz |
|
pre, post o deref no se aplican a ninguna anotación |
|
pre, post o deref se aplican a un bloque |
|
La expresión __at no se aplica a la función actual |
|
La función no puede usarse de forma independiente como anotación |
|
La anotación no se puede usar en una expresión |
|
Ya no se admite la anotación en el parámetro |
|
La anotación en el parámetro tiene más de un elemento value, stringValue y longValue.Use paramn=xxx |
|
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. |
|
La anotación en el parámetro tiene un elemento param2 pero no param1 |
|
La anotación para la función de parámetro no se reconoce |
|
La anotación de la función en el parámetro requiere más desreferencias de las que permite el tipo anotado real. |
|
La anotación de la función tiene un parámetro o anotación externa que no se puede analizar. |
|
La anotación de la función anota 'this' en una función no miembro. |
|
La anotación de parámetro para función no coincide con el tipo de parámetro |
|
Anotación incoherente para la función: la instancia anterior tiene un error. |
|
Anotación incoherente para la función: esta instancia tiene un error. |
|
Anotación incoherente para la función: el parámetro tiene otras anotaciones en esta instancia. |
|
Anotación incoherente para la función: el parámetro tiene otras anotaciones en esta instancia. |
|
dynamic_cast<>() no se admite en anotaciones |
|
Se encontró un error de sintaxis de anotación en la función, para la anotación |
|
Se encontró un error de sintaxis en una anotación condicional para la anotación de tipo intrínseco |
|
Los valores de las listas de resultados deben ser constantes. |
|
Se encontró un error de sintaxis de anotaciones en la función para la anotación. |
|
El parámetro de la anotación de la función al examinar no es coherente con la declaración de la función |
|
Para la función, las pistas no son coherentes con la declaración de la función |
|
El parámetro para _Macro_value_ es nulo |
|
Para el símbolo, se encontró un elemento 'begin' sin el elemento 'end' correspondiente |
|
Para el símbolo se encontró un elemento 'end' sin el elemento 'begin' correspondiente |
|
Las cadenas de formato deben estar en las condiciones previas |
|
Para la función, error de sintaxis en parámetro |
|
Para la función, error de sintaxis cerca del final |
|
Para la función, error de sintaxis en la anotación _At_() (nombre de parámetro no reconocido) |
|
Para la función, error de sintaxis en la anotación _At_() (nombre de parámetro no válido) |
|
Para la función: ReadableTo o WritableTo no tenían una especificación de límite como parámetro |
|
La anotación de la función contiene más valores External que el número real de parámetros |
|
null/notnull posterior en el nivel 0 de desreferenciación carece de sentido para la función. |
|
Los operandos de expresión de tipos no son compatibles para el operador |
|
Ninguna anotación para la primera declaración de la función. |
|
Se encontró un operador adicional de _Deref_ en la anotación. |
|
Se encontró un operador ambiguo de _Deref_ en la anotación. |
|
Se encontró un operador incorrectamente colocado de _Notref_ aplicado al token. |
|
Se detectó un error mientras analizaba un token. |
|
La anotación en parámetro es obsoleta |
|
La anotación en parámetro es obsoleta |
|
La anotación describe una situación no aplicable de forma condicional. |
|
La anotación describe dónde no se puede usar un valor dinámico (una variable) en la condición. |