Advertencias de análisis de código de C/C++
Actualización: noviembre 2007
En esta sección se muestran las advertencias de análisis de C/C++ comprendidas en el intervalo de C6000 a C6999.
En esta sección
Número de advertencia |
Descripción |
---|---|
Advertencia C6001: Usando la memoria sin inicializar <variable> |
|
Advertencia C6011: Eliminando las referencias del puntero NULL <nombre> |
|
Advertencia C6029: Posible saturación de búfer en la llamada a <función>: uso del valor sin comprobar |
|
Advertencia C6031: Se omitió el valor devuelto. <función> podría devolver un valor inesperado |
|
Advertencia C6053: La llamada a <función> no puede tener una cadena <variable> terminada en cero |
|
Advertencia C6054: La cadena <variable> no puede terminar en cero |
|
Advertencia C6057: Saturación de búfer debido al número de caracteres y número de bytes que no coinciden en la llamada a <función> |
|
Advertencia C6059: Parámetro de longitud incorrecta en la llamada a <función>. Pase el número de caracteres restantes, no el tamaño del búfer de <variable> |
|
Advertencia C6063: Falta el argumento de cadena de <función> que corresponde con el especificador de conversión <número> |
|
Advertencia C6064: Falta el argumento de entero de <función> correspondiente al especificador de conversión <número> |
|
Advertencia C6066: No se pasó el puntero como parámetro <número> cuando el puntero es necesario para llamar a <función> |
|
Advertencia C6067: El parámetro <número> de la llamada a <función> debe ser la dirección de la cadena |
|
Advertencia C6200: El índice <nombre> está fuera del intervalo del índice <mín> válido de <máx> para el búfer fuera de pila <variable> |
|
Advertencia C6201: Saturación de búfer para <variable>, posiblemente asignado a la pila: el índice <nombre> está fuera del intervalo válido comprendido entre <mín> y <máx> |
|
Advertencia C6202: Saturación de búfer para <variable>, que está asignado a la pila, en la llamada a <función>: la longitud <tamaño> supera el tamaño de búfer <máx> |
|
Advertencia C6203: Saturación de búfer para el búfer fuera de pila <variable> en la llamada a <función>: la longitud <tamaño> supera el tamaño de búfer |
|
Advertencia C6204: Posible saturación de búfer en la llamada a <función>: uso del parámetro sin activar <variable> |
|
Advertencia C6209: Utilizar 'sizeof<variable> como parámetro <número> en la llamada a <función> donde <variable2> puede ser una matriz de caracteres anchos, ¿deseaba utilizar un recuento de caracteres en lugar de un recuento de bytes? |
|
Advertencia C6211: Pérdida de memoria <puntero> debido a una excepción. Considere utilizar un bloque catch local para limpiar la memoria |
|
Advertencia C6214: Conversión entre diferentes tipos de enteros semánticamente diferentes: HRESULT de un tipo booleano |
|
Advertencia C6215: Conversión entre diferentes tipos de enteros semánticamente diferentes: un tipo booleano de HRESULT |
|
Advertencia C6216: Conversión insertada por el compilador entre tipos de enteros semánticamente diferentes: un tipo booleano de HRESULT |
|
Advertencia C6217: Conversión implícita entre tipos de enteros semánticamente diferentes: probando HRESULT con 'not'. Considere utilizar en su lugar la macro SUCCEEDED o FAILED. |
|
Advertencia C6219: Conversión implícita entre tipos de enteros semánticamente diferentes: comparando HRESULT de 1 o TRUE. Considere utilizar en su lugar la macro SUCCEEDED o FAILED. |
|
Advertencia C6220: Conversión implícita entre tipos enteros semánticamente diferentes: comparando HRESULT con -1. Considere utilizar en su lugar la macro SUCCEEDED o FAILED |
|
Advertencia C6221: Conversión implícita entre tipos enteros semánticamente diferentes: comparando HRESULT con un entero. Considere utilizar en su lugar la macro SUCCEEDED o FAILED. |
|
Advertencia C6225: Conversión implícita entre tipos enteros semánticamente diferentes: asignando 1 o TRUE a HRESULT. Considere utilizar en su lugar S_FALSE |
|
Advertencia C6226: Conversión implícita entre tipos enteros semánticamente diferentes: asignando -1 a HRESULT. Considere utilizar en su lugar E_FAIL |
|
Advertencia C6230: Conversión implícita entre tipos enteros semánticamente diferentes: usando HRESULT en un contexto booleano. |
|
Advertencia C6235: (<constante distinta de cero> || <expresión>) es siempre una constante distinta de cero |
|
Advertencia C6236: (<expresión> || <constante distinta de cero>) siempre es una constante distinta de cero |
|
Advertencia C6237: (<cero> && <expresión>) es siempre cero. <expresión> nunca se evalúa y puede tener efectos secundarios |
|
Advertencia C6239: (<constante distinta de cero> && <expresión>) siempre evalúa el resultado de <expresión>. ¿Deseaba utilizar el operador AND bit a bit? |
|
Advertencia C6240: (<expresión> && <constante distinta de cero>) siempre evalúa el resultado de <expresión>. ¿Deseaba utilizar el operador AND bit a bit? |
|
Advertencia C6242: Un salto fuera de este bloque try fuerza el desenredo local, lo que produce una grave pérdida de rendimiento |
|
Advertencia C6244: La declaración local de <variable> oculta la declaración anterior en la línea <línea> de < archivo > |
|
Advertencia C6246: La declaración local de <variable> oculta la declaración del mismo nombre en el ámbito externo. Información adicional: consulte la declaración anterior en <ubicación>. |
|
Advertencia C6248: Si establece DACL de SECURITY_DESCRIPTOR como NULL dará como resultado un objeto desprotegido |
|
Advertencia C6250: Si llama a <función> sin la etiqueta MEM_RELEASE se podrá liberar memoria pero no descriptores de dirección (VAD), lo que ocasionará pérdidas de espacio de dirección |
|
Advertencia C6255: _alloca indica un error iniciando una excepción de desbordamiento de pila. Considere utilizar _alloca_s en su lugar |
|
Advertencia C6258: Utilizar TerminateThread no permite realizar una limpieza de subproceso correcta |
|
Advertencia C6259: No se puede alcanzar el código etiquetado: (<expresión> y <constante>) no se puede evaluar en <etiqueta case> en una expresión switch |
|
Advertencia C6260: sizeof * sizeof suele ser erróneo. ¿Deseaba utilizar un recuento de caracteres o un recuento de bytes? |
|
Advertencia C6262: La función utiliza <constante> bytes de la pila: supera /analyze:stacksize<constante>. Considere mover algunos datos al montón |
|
Advertencia C6263: Se utilizará _alloca en un bucle: esto puede provocar un rápido desbordamiento de pila |
|
Advertencia C6268: Orden incorrecto de operaciones: (<TYPE1>)(<TYPE2>)x + y. Puede que falten paréntesis en (<TYPE1>)((<TYPE2>)x + y) |
|
Advertencia C6269: Puede que el orden de operaciones sea incorrecto: se omitió la eliminación de la referencia |
|
Advertencia C6270: Falta el argumento float de <función>: agregue un argumento float correspondiente al especificador de conversión <número> |
|
Advertencia C6271: Argumento adicional pasado en <función>: la cadena de formato no utiliza el parámetro <número> |
|
Advertencia C6272: Valor no flotante pasado como argumento <número> cuando el valor flotante es necesario para llamar a <función> |
|
Advertencia 6273: Valor no entero pasado como parámetro <número> cuando el entero es necesario para llamar a <función>: si se está pasando un valor de puntero, deberá utilizar %p |
|
Advertencia C6274: Valor sin caracteres pasado como parámetro <número> cuando el carácter es necesario para llamar a <función> |
|
Advertencia C6276: Conversión entre tipos enteros semánticamente diferentes: char * en wchar_t *. El uso de una cadena no válida puede dar lugar a un comportamiento no definido |
|
Advertencia C6277: Nombre de la aplicación NULL con una ruta sin comillas en la llamada a <función>: dará como resultado una vulnerabilidad de acceso si la ruta contiene espacios |
|
Advertencia C6278: <variable> está asignado con la nueva matriz [], pero se eliminará con la eliminación escalar. No se llamará a los destructores |
|
Advertencia C6279: <variable> está asignado al nuevo escalar, pero se eliminará con la eliminación de matriz [] |
|
Advertencia C6280: <variable> está asignado a <función>, pero eliminado con <función> |
|
Advertencia 6281: Orden incorrecto de operaciones: los operadores relacionales tienen mayor prioridad que los operadores bit a bit |
|
Advertencia C6282: Operador incorrecto: asignación de constante en el contexto booleano. Considere utilizar '==' en su lugar |
|
Advertencia C6283: <variable> está asignado a la nueva matriz [], pero se eliminará con la eliminación escalar. |
|
Advertencia C6284: Objeto pasado como parámetro '% d' cuando la cadena es necesaria para llamar a <función>. |
|
Advertencia C6285: (<constante distinta de cero> || <constante distinta de cero>) es siempre una constante distinta de cero. ¿Deseaba utilizar el operador de bit a bit AND? |
|
Advertencia C6286: (<constante distinta de cero> || <expresión>) es siempre una constante distinta de cero. <expresión> nunca se evalúa y puede tener efectos secundarios |
|
Advertencia C6287: Código redundante: las subexpresiones de izquierda y derecha son idénticas |
|
Advertencia C6288: Operador incorrecto: la inclusión mutua de && es siempre cero. ¿Deseaba utilizar || en su lugar? |
|
Advertencia C6289: Operador incorrecto: la inclusión mutua de || es siempre una constante distinta de cero. ¿Deseaba utilizar && en su lugar? |
|
Advertencia C6290: Operación bit a bit en un resultado lógico: ! tiene mayor prioridad que &. Utilice && o (!(x & y)) en su lugar |
|
Advertencia C6291: Operación bit a bit en un resultado lógico: ! tiene mayor prioridad que |. Utilice || o (!(x | y)) en su lugar |
|
Advertencia C6292: Bucle For definido incorrecto: recuento de un máximo |
|
Advertencia C6293: Bucle For definido incorrecto: recuento de un mínimo |
|
Advertencia C6294: Bucle For definido incorrecto: la condición inicial no supera la prueba. No se ejecutó el cuerpo del bucle. |
|
Advertencia C6295: Bucle For definido incorrecto: los valores de <variable> tienen siempre un intervalo <mín> de <máx>. El bucle se ejecuta infinitamente |
|
Advertencia C6296: Bucle For definido incorrecto. El cuerpo del bucle sólo se ejecuta una vez |
|
Advertencia C6297: Desbordamiento aritmético: se desplaza el valor de 32 bits y, a continuación, se convierte en un valor de 64 bits. Puede que los resultados no tengan un valor esperado |
|
Advertencia C6298: Argumento <puntero>: se utiliza una cadena de sólo lectura como argumento de cadena modificable. Se intentará escribir en la memoria estática de sólo lectura y provocará bloqueos aleatorios |
|
Advertencia C6299: Si compara explícitamente un campo de bits con un tipo booleano tendrá resultados inesperados |
|
Advertencia C6299: Si compara explícitamente un campo de bits con un tipo booleano tendrá resultados inesperados |
|
Advertencia C6303: No coincide la cadena de formato: se pasó la cadena de caracteres anchos como parámetro <número> cuando se requiere la cadena de caracteres para llamar a <función> |
|
Advertencia C6305: Las cantidades de sizeof y countof no coinciden potencialmente |
|
Advertencia C6306: Llamada incorrecta a <función>: considere utilizar <función> que acepta va_list como argumento |
|
Advertencia C6308: 'realloc' puede devolver un puntero nulo: se asignará un puntero nulo a <variable>, que se pasó como argumento en 'realloc', provocará que el bloque de memoria original tenga pérdidas |
|
Advertencia C6309: El argumento <número> es nulo: éste no cumple con la especificación de la función de <función> |
|
Advertencia C6310: Una constante no válida en el filtro de excepción puede provocar un comportamiento inesperado |
|
Advertencia C6312: Posible bucle infinito: se utilizará la constante EXCEPTION_CONTINUE_EXECUTION en la expresión de filtro de excepciones de try-except |
|
Advertencia C6313: Operador incorrecto: Operador incorrecto: no se puede probar la etiqueta con valor cero con el operador AND bit a bit. Utilice una prueba de igualdad para comprobar las etiquetas con valor cero |
|
Advertencia C6314: Orden incorrecto de las operaciones: el operador OR bit a bit tiene prioridad sobre el operador de expresión condicional. Agregue un paréntesis para clarificar la intención |
|
Advertencia C6315: Orden incorrecto de las operaciones: el operador AND bit a bit tiene prioridad sobre el operador OR bit a bit. Agregue un paréntesis para clarificar la intención |
|
Advertencia C6316: Operador incorrecto: la expresión probada es constante y no es cero. Utilice el operador AND bit a bit para determinar si están establecidos los bits |
|
Advertencia C6317: Operador incorrecto: logical-not (!) no se puede cambiar por ones-complement (~) |
|
Advertencia C6318: __try/__except definido incorrecto: uso de la constante EXCEPTION_CONTINUE_SEARCH u otra que evalúe en cero la expresión de filtro de excepciones. No se ejecutará el código en el bloque del controlador de excepciones |
|
Advertencia C6319: El uso del operador de comas en una expresión probada hace que el argumento izquierdo se omita cuando no tiene efectos secundarios |
|
Advertencia C6320: La expresión de filtro de excepciones es la constante EXCEPTION_EXECUTE_HANDLER. Esto puede enmascarar excepciones que no se esperaba que se controlaran |
|
Advertencia C6322: Bloque empty _except |
|
Advertencia 6323: Uso del operador aritmético en tipos booleanos |
|
Advertencia C6324: Posible uso incorrecto de <función1>: ¿deseaba utilizar <función2>? |
|
Advertencia C6326: Posible comparación de una constante con otra constante |
|
Advertencia C6327: Posible saturación de búfer: SysAllocStringLen copia <número> caracteres de la cadena <variable> sin validar el número de caracteres que se van a copiar. Puede que se bloquee el código |
|
Advertencia C6328: <tipo> pasado como parámetro <número> cuando <tipo> es necesario para llamar a <función> |
|
Advertencia C6331: Parámetro no válido: no se permite pasar MEM_RELEASE y MEM_DECOMMIT junto con <función>. Esto provocará un error en la llamada |
|
Advertencia C6332: Parámetro no válido: no se permite pasar cero como el parámetro dwFreeType en <función>. Esto provocará un error en la llamada |
|
Advertencia C6333: Parámetro no válido: no se permite pasar MEM_RELEASE y un parámetro dwSize que no sea cero en <función>. Esto provocará un error en la llamada |
|
Advertencia C6334: el operador sizeof aplicado en una expresión con un operador puede proporcionar resultados inesperados |
|
Advertencia C6335: Controlador de información del proceso con pérdidas <nombre de identificador> |
|
Advertencia C6336: El operador aritmético tiene prioridad sobre el operador de interrogación, utilice el paréntesis para clarificar la intención |
|
Advertencia C6381: La API de cierre <función> requiere dwReason o lpMessage válido |
|
Advertencia C6383: Saturación de búfer debido a la conversión de un recuento de elemento en un recuento de bytes: se esperaba un recuento de elemento para el parámetro <número> en la llamada a <función> |
|
Advertencia C6384: Dividiendo el tamaño de (sizeof) un puntero por otro valor |
|
Advertencia C6385: Datos no válidos: se obtendrá acceso a <nombre del búfer>, el tamaño de lectura son <tamaño1> bytes, pero pueden leer <tamaño2> bytes: Líneas: x, y |
|
Advertencia C6386: Saturación de búfer: se obtendrá acceso a <nombre de búfer>, el tamaño de lectura son <tamaño1> bytes, pero pueden escribir <tamaño2> bytes: Líneas: x, y |
|
Advertencia C6387: <argumento> puede ser <valor>: no cumple con las especificaciones de la función <nombre de función>: Líneas: x, y |
|
Advertencia C6388: <argumento> no puede ser <valor>: no cumple con las especificaciones de la función <nombre de función>: Líneas: x, y |
|
Advertencia C6400: Se utilizará <nombre de función> para realizar una comparación con distinción entre mayúsculas y minúsculas con la cadena de constante <nombre de cadena>. Se proporcionarán resultados inesperados en las configuraciones regionales que no estén en inglés |
|
Advertencia C6401: Se utilizará <nombre de función> en una configuración regional predeterminada para realizar una comparación con distinción entre mayúsculas y minúsculas con la cadena de constante <nombre de cadena>. Se proporcionarán resultados inesperados en las configuraciones regionales que no estén en inglés |
|
Advertencia C6500: Anotación no válida: el valor de la propiedad <nombre> no es válido |
|
Advertencia C6501: Conflicto de anotación: la propiedad <nombre> entra en conflicto con la propiedad especificada anteriormente |
|
Advertencia C6503: Anotación no válida: puede que las referencias y matrices no estén marcadas como Null=Yes o Null=Maybe |
|
Advertencia C6504: Anotación no válida: la propiedad 'Null' únicamente se puede utilizar en valores de puntero, puntero a miembro o matriz |
|
Advertencia C6505: Anotación no válida: la propiedad MustCheck no se puede utilizar en valores de tipo void |
|
Advertencia C6506: Anotación no válida: la propiedad <nombre> únicamente se debe utilizar en valores de tipo de puntero o de matriz |
|
Advertencia C6507: Conflicto de anotación: la propiedad 'Null' de Deref=0 en una condición posterior debe ser un subconjunto de la propiedad Null en la condición previa |
|
Advertencia C6508: Anotación no válida: no se permite el acceso de escritura en los valores const |
|
Advertencia C6509: Anotación no válida: no se puede hacer referencia a 'return' desde una condición previa |
|
Advertencia C6510: Anotación no válida: únicamente se puede utilizar la propiedad 'NullTerminated' en búferes cuyos elementos sean de tipo de puntero o integral |
|
Advertencia C6511: Anotación no válida: la propiedad MustCheck debe ser Yes o No |
|
Advertencia C6512: Anotación no válida: la propiedad Null debe ser Maybe si la propiedad Valid es No |
|
Advertencia C6513: Anotación no válida: ElementSizeConst requiere propiedades de tamaño adicional |
|
Advertencia C6514: Anotación no válida: el valor de la propiedad <nombre> supera el tamaño de la matriz |
|
Advertencia C6515: Anotación no válida: la propiedad <nombre> únicamente se debe utilizar en valores de tipo de puntero |
|
Advertencia C6516: Anotación no válida: no se especificaron propiedades del atributo <nombre> |
|
Advertencia C6517: Conflicto de anotación: no se puede especificar ValidElementsConst y ValidBytesConst en los búferes que no son de lectura |
|
Advertencia C6518: Conflicto de la anotación: WriteableElementsConst y WriteableBytesConst no se pueden especificar en búferes que no son de escritura |
|
Advertencia C6521: Especificación de tamaño no válida: el operador * únicamente se puede aplicar a tipos de puntero |
|
Advertencia C6522: Especificación de tamaño no válida: la expresión debe ser de tipo integral |
|
Advertencia C6523: Especificación de tamaño no válida: no se encontró el parámetro <nombre> |
|
Advertencia C6525: Especificación de tamaño no válida: puede que el valor de la propiedad no sea válido |
|
Advertencia C6526: Especificación de tamaño no válida: la expresión debe ser de tipo de puntero o de matriz |
|
Advertencia 6530: Estilo de cadena de formato no reconocido <nombre> |
|
Advertencia C6535: El búfer no puede ser de tipo <n>, mayor que size_t |
Vea también
Conceptos
Instrucciones para escribir código seguro