Share via


Herramientas del IDE de Visual Studio para actualizar código de C++

Visual Studio le ayuda a actualizar código de C++ heredado con opciones del compilador, advertencias de análisis de código y características del editor, como correcciones rápidas, información rápida y la barra de desplazamiento mejorada. El término "código heredado" hace referencia a cualquiera de estas categorías:

  • Código que anteriormente permitía el compilador de Microsoft C++ (MSVC), pero que nunca se ajustaba al estándar de C++.

    Para actualizar código MSVC anterior no conforme, active la opción del compilador /permissive-. Todas las instancias de usos no conformes se resaltan con subrayados ondulados rojos en el editor de código. Los mensajes de error de la ventana Lista de errores incluyen una recomendación para corregir el error. Haga clic en el código de error para ir a su página de ayuda en la documentación. Si corregir todos los errores a la vez no es práctico, puede actualizar el código no conforme en fases activando la opción /permissive-, corrigiendo algunos errores y desactivando la opción de nuevo. El código se compilará con las nuevas mejoras, y puede volver atrás y corregir los problemas restantes más adelante. Consulte la página /permissive- para obtener ejemplos de código MSVC no conforme.

  • Código permitido en una versión anterior del estándar de C++, pero que ha quedado en desuso o se ha quitado en una versión posterior.

    Para actualizar a un estándar de lenguaje más reciente, establezca la opción Estándar del lenguaje C++ en el estándar deseado y corrija los errores de compilación que se produzcan. En general, se recomienda establecer el estándar de idioma en /std:c++17 o /std:c++20. Los errores que se producen al actualizar a un estándar más reciente no están relacionados con los errores que se producen al usar la opción /permissive-.

  • Código que se ajusta a todas las versiones del estándar, pero ya no se considera un procedimiento recomendado en C++ moderno.

    Para identificar el código en el que se recomiendan los cambios, ejecute Análisis de código.

Apertura y conversión de un proyecto heredado

Si el proyecto heredado se basa en una versión anterior de Visual Studio, puede abrirlo en Visual Studio 2017 o Visual Studio 2019. Visual Studio lo convierte automáticamente en el esquema del proyecto actual con compatibilidad con todas las características más recientes del compilador y del IDE.

Screenshot of the Upgrade a project dialog.

Para más información, consulte Actualización de proyectos de C++ desde versiones anteriores de Visual Studio.

Buscar en el código base

La actualización de una base de código suele implicar la búsqueda a través de varios archivos. Para buscar cualquier cosa en la base de código, presione Ctrl+T para abrir el cuadro de búsqueda Ir a todo.

Screenshot of the Go to all dialog.

Para restringir el ámbito de búsqueda, escriba uno de los filtros de una letra, seguido de un espacio y, a continuación, lo que busca.

Lista de errores

Después de establecer el estándar del lenguaje C++ deseado y cualquier otra opción del compilador (Proyecto>Propiedades>General), presioneMayús para compilar el proyecto. Puede esperar ver algunos errores y advertencias en forma de subrayados ondulados rojos en varios lugares del código. Los errores también aparecen en la lista de errores. Para obtener más información sobre un error específico, haga clic en el código de error para ir a la página de ayuda de la documentación. Los códigos de error que comienzan con una "C" son errores del compilador. Los códigos que comienzan por "MSB" son errores de MSBuild que indican un problema con la configuración del proyecto.

Screenshot showing compiler and MSBuild errors in Error List.

Indicador de estado del documento

El indicador de mantenimiento del documento en la parte inferior del editor muestra el número de errores y advertencias del documento actual y permite navegar directamente desde una advertencia o error a la siguiente.

Document health indicator.

En muchos casos, puede encontrar más información sobre un error específico en la documentación sobre el historial de cambios de Visual Studio y mejoras de conformidad.

Uso del análisis de código para modernizar el código

Al actualizar, se recomienda ejecutar el análisis de código en el proyecto para que el código se ajuste como mínimo a las reglas recomendadas nativas de Microsoft. Estas reglas son una combinación de reglas definidas por Microsoft y un subconjunto de C++ Core Guidelines. Al ajustarse a estos, reducirá o eliminará en gran medida los orígenes comunes de errores y, al mismo tiempo, hará que el código sea más legible y, por lo tanto, más fácil de mantener. El análisis de código con las reglas recomendadas nativas de Microsoft está habilitado de forma predeterminada. Puede habilitar reglas adicionales en Proyecto>Propiedades>Análisis de código. El código que infringe una de las reglas se marca como una advertencia y está subrayado con un subrayado ondulado verde en el editor de código. Mantenga el puntero sobre el subrayado ondulado para ver una información rápida que describe el problema.

Screenshot of a Code analysis tooltip.

Haga clic en el icono de filtro de la columna Código para elegir qué advertencias se muestran.

Screenshot of Code analysis filters in Error List.

Los errores y advertencias de análisis de código también aparecen en la lista de errores, al igual que los errores del compilador.

Screenshot of Code analysis warnings in Error List.

Puede cambiar qué reglas están activas y crear conjuntos de reglas personalizados. Para más información sobre el análisis de código, consulte Análisis de código para C/C++.

Uso de Acciones rápidas para modernizar el código

El editor de código proporciona acciones rápidas para algunas recomendaciones comunes. Cuando se muestre el icono de bombilla, puede hacer clic en él para ver las acciones rápidas disponibles.

Conversión de macros en funciones constexpr

En la imagen siguiente se muestra el uso de la macro denominada AVERAGE, que tiene la coloración semántica predeterminada. La imagen también muestra la información rápida que se muestra cuando el cursor del mouse mantiene el puntero sobre él:

Screenshot of a QuickInfo macro expansion.

Dado que no se recomienda el uso de macros en C++ moderno, Visual Studio facilita la conversión de macros a funciones constexpr:

  1. Haga clic con el botón derecho en AVERAGE y seleccione Ir a la definición.

  2. Haga clic en el icono de destornillador y elija Convertir macro en constexpr.

    Screenshot of a Quick Action macro to constexpr.

La macro se convierte como se muestra a continuación:

Screenshot of a constexpr function.

Y la llamada a AVERAGE ahora se colorea como una llamada de función y la información rápida muestra el tipo deducido de la función:

Screenshot of a constexpr function call.

Inicialización de variables

Las variables no inicializadas pueden contener valores aleatorios que conducen a errores graves. El análisis de código marca estas instancias y el editor proporciona una acción rápida:

Screenshot of the pop-up for an uninitialized variable.

Convertir en literal de cadena sin formato

Los literales de cadena sin formato son menos propensos a errores y son más cómodos para escribir que las cadenas con caracteres de escape insertados. Haga clic con el botón derecho en una cadena y elija Acciones rápidas para convertirlo en un literal de cadena sin formato.

Raw string literal.

La cadena se convierte en: R"(C:\Users\bjarnes\demo\output.txt)".