Inicio rápido: Análisis de código para C/C++

Se puede mejorar la calidad de la aplicación si se analiza con regularidad el código de C o C++. El análisis de código puede ayudarle a encontrar problemas comunes e infracciones de las buenas prácticas de programación. Y, se encuentran defectos que son difíciles de detectar mediante pruebas. Sus advertencias difieren de los errores y advertencias del compilador: se buscan patrones de código específicos que se sabe que causan problemas. Es decir, código válido, que, sin embargo, podría crear problemas, ya sea para usted o para otras personas que usan el código.

Configurar conjuntos de reglas para un proyecto

  1. En el Explorador de soluciones, abra el menú contextual del nombre del proyecto y, luego, elija Propiedades.

  2. Opcionalmente, en las listas Configuración y Plataforma, elija la configuración de compilación y la plataforma de destino.

  3. Para ejecutar el análisis de código cada vez que se compila el proyecto con la configuración seleccionada, active la casilla Habilitar análisis de código al compilar. También puede ejecutar el análisis de código de forma manual; para ello, abra el menú Analizar y elija Ejecutar análisis de código enProjectName o Ejecutar análisis de código en archivo.

  4. Elija el conjunto de reglas que quiere usar o cree un conjunto de reglas personalizado. Si usa LLVM/clang-cl, consulte Uso de Clang-Tidy en Visual Studio para configurar las opciones de análisis de Clang-Tidy.

Conjuntos de reglas de C o C++ estándar

Visual Studio incluye estos conjuntos de reglas estándar para código nativo:

Conjunto de reglas Descripción
Reglas aritméticas de C++ Core Check Estas reglas aplican comprobaciones relacionadas con las operaciones aritméticas de C++ Core Guidelines.
Reglas de límites de C++ Core Check Estas reglas aplican el perfil de límites de C++ Core Guidelines.
Reglas de clase C++ Core Check Estas reglas aplican comprobaciones relacionadas con las clases de C++ Core Guidelines.
Reglas de simultaneidad de C++ Core Check Estas reglas aplican comprobaciones relacionadas con la simultaneidad de C++ Core Guidelines.
Reglas de valores constantes de C++ Core Check Estas reglas aplican comprobaciones relacionadas con valores constantes de C++ Core Guidelines.
Reglas de declaración de C++ Core Check Estas reglas aplican comprobaciones relacionadas con las declaraciones de C++ Core Guidelines.
Reglas de enumeración de C++ Core Check Estas reglas aplican comprobaciones relacionadas con la enumeración de C++ Core Guidelines.
Reglas experimentales de C++ Core Check Estas reglas recopilan algunas comprobaciones experimentales. Finalmente, se espera que estas comprobaciones se muevan a otros conjuntos de reglas o se quiten por completo.
Reglas de función de C++ Core Check Estas reglas aplican comprobaciones relacionadas con las funciones de C++ Core Guidelines.
Reglas de GSL de C++ Core Check Estas reglas aplican comprobaciones relacionadas con la biblioteca de soporte técnico de C++ Core Guidelines.
Reglas de duración de C++ Core Check Estas reglas aplican el perfil de duración de C++ Core Guidelines.
Reglas de puntero propietario de C++ Core Check Estas reglas aplican comprobaciones de administración de recursos relacionadas con owner<T> de C++ Core Guidelines.
Reglas de puntero básico de C++ Core Check Estas reglas aplican comprobaciones de administración de recursos relacionadas con punteros básicos de C++ Core Guidelines.
Reglas de C++ Core Check Estas reglas aplican un subconjunto de las comprobaciones de C++ Core Guidelines. Use este conjunto de reglas para incluir todas las reglas de C++ Core Check, excepto los conjuntos de reglas de enumeración y experimentales.
Reglas de puntero compartido de C++ Core Check Estas reglas aplican comprobaciones de administración de recursos relacionadas con tipos con semántica de puntero compartido de C++ Core Guidelines.
Reglas de STL de C++ Core Check Estas reglas aplican comprobaciones relacionadas con la biblioteca estándar de C++ de las directrices principales de C++.
Reglas de estilo de C++ Core Check Estas reglas aplican comprobaciones relacionadas con el uso de expresiones e instrucciones de C++ Core Guidelines.
Reglas de tipo de C++ Core Check Estas reglas aplican el perfil de tipo de C++ Core Guidelines.
Reglas de puntero único de C++ Core Check Estas reglas aplican comprobaciones de administración de recursos relacionadas con tipos con semántica de puntero único de C++ Core Guidelines.
Reglas de comprobación de simultaneidad Estas reglas aplican un conjunto de comprobaciones de patrón de simultaneidad Win32 en C++.
Reglas de simultaneidad Agrega reglas de simultaneidad de C++ Core Guidelines a las reglas de comprobación de simultaneidad.
Reglas mínimas nativas de Microsoft Estas reglas se centran en los problemas más graves del código nativo, incluidas las posibles vulnerabilidades de seguridad y los bloqueos de la aplicación. Se recomienda incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos nativos.
Reglas recomendadas nativas de Microsoft Estas reglas se centran en los problemas más graves y habituales del código nativo. Estos problemas incluyen posibles vulnerabilidades de seguridad y bloqueos de aplicación. Se recomienda 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. Incluye todas las reglas de Reglas mínimas nativas de Microsoft.

Visual Studio incluye estos conjuntos estándar de reglas para código administrado:

Conjunto de reglas Descripción
Reglas de corrección básicas de Microsoft Estas reglas se centran en errores lógicos y comunes cometidos en el uso de API de marco de trabajo. Incluya este conjunto de reglas para ampliar la lista de advertencias emitidas por las reglas mínimas recomendadas.
Reglas de directrices de diseño básicas de Microsoft Estas reglas se centran en exigir procedimientos recomendados para que el código sea fácil de comprender y de usar. Incluya este conjunto de reglas si el proyecto incluye código de bibliotecas o si desea exigir procedimientos recomendados para que el código sea fácil de mantener.
Reglas de corrección ampliadas de Microsoft Estas reglas amplían las reglas de corrección básicas con el fin de maximizar los errores de lógica y uso del marco de trabajo que se notifican. Se pone especial énfasis en escenarios específicos como la interoperabilidad COM y las aplicaciones móviles. Considere la posibilidad de incluir este conjunto de reglas si uno de estos escenarios se aplica al proyecto o para encontrar más problemas en el proyecto.
Reglas de directrices de diseño ampliadas de Microsoft Estas reglas amplían las reglas básicas de las directrices de diseño para ampliar los problemas notificados sobre el uso y el mantenimiento. Se pone especial énfasis en las directrices de nomenclatura. Considere incluir este conjunto de reglas si el proyecto incluye código de bibliotecas o si desea exigir los más altos estándares para escribir código fácil de mantener.
Reglas de globalización de Microsoft Estas reglas se centran en problemas que impiden que los datos de la aplicación se muestren correctamente cuando se usan en diferentes idiomas, configuraciones regionales y referencias culturales. Incluya este conjunto de reglas si la aplicación se localiza o globaliza.
Reglas mínimas administradas de Microsoft Estas reglas se centran en los problemas más graves del código para los que el análisis del mismo es la solución más precisa. Estas reglas son pequeñas en número y solo están pensadas para ejecutarse en ediciones limitadas de Visual Studio. Use MinimumRecommendedRules.ruleset con otras ediciones de Visual Studio.
Reglas recomendadas administradas de Microsoft Estas reglas se centran en los problemas más graves del código. Estos problemas incluyen posibles vulnerabilidades de seguridad, bloqueos de la aplicación y otros errores de diseño y lógica importantes. Se recomienda incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos.
Reglas mínimas mixtas (C++ /CLR) de Microsoft Estas reglas se centran en los problemas más graves de los proyectos de C++ compatibles con Common Language Runtime. Estos problemas incluyen posibles vulnerabilidades de seguridad, bloqueos de la aplicación y otros errores de diseño y lógica importantes. Se recomienda incluir este conjunto de reglas en todos los conjuntos de reglas personalizados que cree para sus proyectos de C++ compatibles con Common Language Runtime.
Reglas recomendadas mixtas (C++ /CLR) de Microsoft Estas reglas se centran en los problemas más graves de los proyectos de C++ compatibles con Common Language Runtime. Estos problemas incluyen posibles vulnerabilidades de seguridad, bloqueos de la aplicación y otros errores de diseño y lógica importantes. Este conjunto de reglas está diseñado para su uso con Visual Studio Professional y versiones posteriores.
Reglas de seguridad de Microsoft Este conjunto de reglas contiene todas las reglas de seguridad de Microsoft. Incluya este conjunto de reglas para maximizar el número de posibles problemas de seguridad que se detectan.

Para incluir todas las reglas:

Conjunto de reglas Descripción
Todas las reglas de Microsoft Este conjunto de reglas contiene todas las reglas. Si se ejecuta este conjunto de reglas, puede dar lugar a un gran número de advertencias. Use este conjunto de reglas para obtener una imagen completa de todos los problemas del código. Esto puede ser útil para decidir qué conjuntos de reglas son más apropiados para ejecutarlos en sus proyectos.

Ejecutar análisis de código

En la página Code Analysis del cuadro de diálogo Propiedades del proyecto, puede configurar el análisis de código para que se ejecute siempre que se compile el proyecto. También se puede ejecutar el análisis de código de forma manual.

Para ejecutar el análisis de código en una solución:

  • En el menú Compilar, elija Ejecutar análisis de código en la solución.

Para ejecutar el análisis de código en proyecto:

  1. En el Explorador de soluciones, seleccione el nombre del proyecto.

  2. En el menú Compilar, elija Ejecutar análisis de código enNombre del proyecto.

Para ejecutar el análisis de código en un archivo:

  1. En el Explorador de soluciones, seleccione el nombre del archivo.

  2. En el menú Compilar, elija Ejecutar análisis de código en archivo o presione Ctrl+Mayús+Alt+F7.

    La solución o proyecto se compila y se ejecuta el análisis de código. Los resultados aparecen en la ventana Lista de errores.

Analizar y resolver las advertencias del análisis de código

En la ventana Lista de errores se enumeran las advertencias de análisis de código encontradas. Los resultados se muestran en una tabla. Si hay más información disponible sobre una advertencia determinada, la primera columna contiene un control de expansión. Selecciónelo para expandir la pantalla para obtener información adicional sobre el problema. Cuando es posible, el análisis de código muestra los números de línea y la lógica de análisis que condujeron a la advertencia.

Para información detallada sobre la advertencia, incluidas las posibles soluciones al problema, elija el identificador de advertencia en la columna Código para mostrar su correspondiente artículo de Ayuda en línea.

Haga doble clic en una advertencia para mover el cursor a la línea de código que provocó la advertencia en el editor de código de Visual Studio. O bien, presione Entrar en la advertencia seleccionada.

Cuando haya entendido el problema, podrá resolverlo en el código. A continuación, vuelva a ejecutar el análisis de código para asegurarse de que la advertencia ya no aparece en la lista de errores.

Creación de elementos de trabajo para las advertencias del análisis de código

La característica de seguimiento de elemento de trabajo permite registrar errores desde Visual Studio. Para usar esta característica, es necesario conectarse a una instancia de Azure DevOps Server (antes Team Foundation Server).

Para crear un elemento de trabajo para una o varias advertencias de código de C/C++

  1. En la lista de errores, expanda y seleccione las advertencias.

  2. En el menú contextual de las advertencias, elija Crear elemento de trabajo y luego elija el tipo de elemento de trabajo.

  3. Visual Studio crea un único elemento de trabajo para las advertencias seleccionadas y muestra el elemento de trabajo en una ventana de documento del IDE.

  4. Agregue la información adicional que sea necesaria y luego elija Guardar elemento de trabajo.

Búsqueda y filtrado de los resultados de análisis de código

Puedes buscar en las listas largas de mensajes de advertencia y filtrar las advertencias en las soluciones de varios proyectos.

  • Para filtrar las advertencias por título o identificador de advertencia: escriba la palabra clave en el cuadro Lista de errores de búsqueda.

  • Para filtrar las advertencias por gravedad: de forma predeterminada, los mensajes de análisis de código tienen asignada una gravedad de Advertencia. Para asignar la gravedad de Error a uno o más mensajes, use un conjunto de reglas personalizado. En la columna Gravedad de Lista de errores, elija la flecha desplegable y, luego, el icono de filtro. Elija Advertencia o Error para mostrar únicamente los mensajes que tengan asignada la correspondiente gravedad. Elija Seleccionar todo para mostrar todos los mensajes.

Consulte también