Configuración de la limpieza de directivas include de C/C++ en Visual Studio

A partir de la versión preliminar 1 de 17.8, Visual Studio puede limpiar las instancias de #include para mejorar la calidad del código de C y C++ de las maneras siguientes:

  • Ofrece la posibilidad de agregar archivos de encabezado para el código que se compila solo porque otro archivo de encabezado incluye indirectamente un archivo de encabezado necesario.
  • Ofrece la posibilidad de quitar archivos de encabezado sin usar, lo que mejora los tiempos de compilación.

En este artículo se describe cómo configurar la limpieza de directivas include en Visual Studio. Para más información sobre la limpieza de directivas include, vea Introducción a la limpieza de directivas include de C/C++.

Activación de la limpieza de directivas include

La característica de la limpieza de directivas include está activada de forma predeterminada. Si no lo está, puede activarla desde Herramientas>Opciones>Editor de texto>C/C++>Limpieza de código y seleccionar Habilitar limpieza de #include.

Después, use las listas desplegables para configurar cómo quiere recibir notificaciones sobre las oportunidades para agregar encabezados indirectos o quitar encabezados sin usar:

The Tools options dialog opened at Text Editor > C/C++ > Code Cleanup.

La casilla Habilitar limpieza de #include está activada. Se muestran las listas desplegables para Nivel de sugerencia de eliminación de directivas include sin usar y Nivel de sugerencia de adición directivas include que faltan. Se muestra el contenido de la lista desplegable: **Solo refactorización**, **Sugerencia**, **Advertencia** y **Error**. La lista desplegable **Nivel de sugerencia de eliminación de directivas include sin usar** ofrece las mismas opciones, pero también agrega atenuadas.

Los significados de las opciones de nivel de sugerencia son los siguientes:

Solo refactorización: la limpieza de directivas include ofrece acciones que puede realizar desde el menú de acción rápida al mantener el puntero del mouse sobre #include, o bien al colocar el cursor en la línea #include y presionar Ctrl+punto:

A screenshot of the quick action to remove an unused header

Al mantener el cursor sobre #include iostream, aparece una bombilla con el texto "#include iostream no se usa en este archivo".

Sugerencia, Advertencia, Error: la limpieza de directivas include ofrece acciones que puede realizar mediante sugerencias, advertencias o errores en la ventana Lista de errores. Debe determinar cada una. En la captura de pantalla siguiente de la lista de errores, la limpieza de directivas include está configurada para mostrar encabezados sin usar con una advertencia. Asegúrese de que Compilación + IntelliSense está seleccionado en el filtro desplegable para que pueda ver la salida de la limpieza de directivas include:

A screenshot of the Error List window.

El filtro desplegable se establece en Compilación + IntelliSense. Se ve una advertencia: VCIC002: "#include < iostream > no se usa en este archivo".

Atenuado

Para mostrar los encabezados sin usar, la limpieza de directivas include atenúa la línea del archivo de encabezado sin usar en el editor de código. Mantenga el cursor sobre la instancia atenuada de #include para abrir el menú de acción rápida y elija Mostrar posibles correcciones, o bien haga clic en la lista desplegable de la bombilla para ver las acciones relacionadas con el archivo sin usar.

A screenshot of a dimmed #include < iostream > line.

La línea de #include < iostream > está atenuada porque la línea de código en la que se usa iostream se ha convertido en comentario. Esa línea de código es// std::cout << "charSize = " << charSize; también se muestra el menú de acción rápida para esta línea. Indica que en este archivo no se usa #include < iostream > y tiene un vínculo a Mostrar posibles correcciones.

Configuración de la limpieza de directivas include con .editorconfig

Hay más opciones para configurar la limpieza de directivas include, como excluir las sugerencias de limpieza especificadas, lo que indica que algunos archivos de encabezado son obligatorios, para que la herramienta no las marque como no usados, etc. Estas opciones se definen en un archivo .editorconfig, que puede agregar al proyecto para, entre otras cosas, aplicar estilos de codificación coherentes para todos los usuarios que trabajan en el código base. Para más información sobre cómo agregar un archivo .editorconfig al proyecto, vea Creación de una configuración de editor portátil y personalizada con EditorConfig.

Los valores .editorconfig que puede usar con la limpieza de directivas include son los siguientes:

Configuración Valores Ejemplo
cpp_include_cleanup_add_missing_error_tag_type

Establece el nivel de error de los mensajes de adición de directivas include transitivas.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Establece el nivel de error de los mensajes de eliminación de directivas include sin usar.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Excluye los archivos especificados de los mensajes de limpieza de directivas include. No obtendrá ninguna sugerencia relacionada con el encabezado, ya sea para agregarlo o de que no se usa.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_required_files

Especifique que el uso de archivo1 requiere archivo2. Por ejemplo, especifique que si usa atlwin.h también se debe incluir altbase.h.
archivo1:archivo2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_include_cleanup_replacement_files

Reemplaza archivo1 por archivo2 durante el procesamiento de limpieza de directivas include. Por ejemplo, puede preferir usar cstdio antes que stdio.h. Si tiene un archivo con #include <cstudio> y #include <stdio.h>, y solo consume contenido de stdio.h, con este valor la limpieza de directivas include le indicará que quite stdio.h, porque ha reemplazado el uso de cstdio por stdio.h durante el procesamiento. Si no usa el contenido de ninguno de ellos, la limpieza de directivas include le indicará que quite los dos.
archivo1:archivo2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

No genere un mensaje para la inclusión indirecta de archivo2 si se incluye archivo1. Por ejemplo, si #include <windows.h> solo usan algo del encabezado winerror.h incluido indirectamente, la limpieza de directivas include no le pedirá que agregue winerror.h. Resulta útil cuando se prefiere incluir un archivo de encabezado de fachada en lugar de las inclusiones indirectas que contiene.
archivo1:archivo2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

Consulte también

Introducción a la limpieza de directivas include de C/C++
Mensajes de limpieza de directivas include