Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A partir de la versión preliminar 1 de 17.8, Visual Studio puede aplicar limpieza a los archivos que #include para mejorar la calidad de su código de C y C++ de las siguientes maneras:
- Ofrece agregar archivos de cabecera al código que compila únicamente porque un archivo de cabecera necesario está incluido indirectamente a través de otro archivo de cabecera.
- 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 Include Cleanup 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++.
Activa la limpieza de inclusiones
La función "Include Cleanup" está desactivada de forma predeterminada.
Actívelo seleccionando Herramientas>Opciones>Editor de texto>C/C++>Limpieza de código y seleccionando Habilitar la limpieza de #include.
A continuación, use las listas desplegables para configurar la gravedad de las notificaciones sobre las oportunidades de agregar encabezados indirectos o quitar encabezados no utilizados:
La casilla **Habilitar la limpieza de #include** está activada. Se muestran las listas desplegables de **nivel de sugerencia para quitar directivas include sin usar** y **nivel de sugerencia para agregar directivas include que faltan**. Se muestra el contenido de la lista desplegable: **Solo refactorización**, **Sugerencia**, **Advertencia** y **Error**. La lista desplegable **Quitar sin usar incluye el nivel de sugerencia** ofrece las mismas opciones, pero también agrega **Dimmed**.
Estas opciones controlan el tipo de notificación que la característica Include Cleanup proporciona acerca de los encabezados sin usar:
Atenuado
Include Cleanup muestra encabezados no usados al atenuar la línea del archivo de encabezado no usados en el editor de código y con un mensaje en la ventana Lista de errores . En el editor de código, pase el cursor por encima del #include atenuado para abrir el menú de acciones rápidas y elija Mostrar posibles correcciones, o haga clic en el menú desplegable de la bombilla para ver las acciones relacionadas con el archivo no utilizado.
La línea de #include < iostream > está atenuada porque la línea de código que usa iostream está comentada. Esa línea de código es // std::cout << "charSize = " << charSize; También está visible el menú de acciones rápidas para esta línea. Indica que en este archivo no se usa #include < iostream > y tiene un vínculo a Mostrar posibles correcciones.
Solo refactorización: Include Cleanup ofrece acciones que puede realizar a través del menú de acciones rápidas en el editor de código al pasar el puntero del ratón sobre un #include, o al colocar el cursor en la línea #include y pulsar Ctrl+.:
Al mantener el cursor sobre #include iostream, aparece una bombilla con el texto "#include iostream no se usa en este archivo".
Sugerencia, Advertencia, Error: Include Cleanup puede mostrar los mensajes de Include Cleanup como sugerencias, advertencias o errores en la ventana Lista de errores. Usted determina cuál. En la siguiente captura de pantalla de la Lista de errores, la Limpieza de inclusiones está configurada para mostrar los archivos de encabezado no utilizados 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 inclusiones:
El filtro desplegable está configurado en **Build + IntelliSense**. Hay una advertencia visible: VCIC002 : "#include
Para activarlo, seleccione Herramientas>Opciones>Toda la configuración>Idiomas>C/C++>Limpieza de código>Limpieza de inclusiones. Utilice las listas desplegables para configurar cómo desea recibir notificaciones sobre las opciones para resaltar directivas #include no utilizadas, directivas #include que se pueden optimizar (eliminar después de añadir directamente sus inclusiones transitivas obligatorias) y directivas #include que faltan y que se incluyen de forma transitiva.
Captura de pantalla que muestra las listas desplegables para elegir cómo resaltar un encabezado sin usar en el editor de código, los que se pueden optimizar y los que se incluyen transitivamente.
El significado de las opciones:
Atenuado
Include Cleanup muestra encabezados sin usar al atenuar la línea del archivo de encabezado sin usar en el editor de código y como mensaje en la ventana Lista de errores . En el editor de código, sitúe el cursor sobre el elemento atenuado #include para abrir el menú de acciones rápidas y elija Mostrar posibles correcciones, o haga clic en el menú desplegable de la bombilla para ver las acciones relacionadas con el archivo no usado.
La línea de `#include
Ninguno: no realice ninguna acción. Include Cleanup sigue ofreciendo acciones que puedes realizar en el editor de código mediante el menú de acciones rápidas cuando pasas el puntero del ratón sobre un #include, o colocas el cursor en la línea #include y pulsas Ctrl+.:
Sugerencia, Advertencia, Error: Include Cleanup puede mostrar los mensajes de Include Cleanup como sugerencias, advertencias o errores en la ventana Lista de errores. Usted determina cuál. En la siguiente captura de pantalla de la Lista de errores, la limpieza de inclusiones está configurada para mostrar los archivos de encabezado no utilizados como advertencia. Asegúrese de que Compilación + IntelliSense esté seleccionado en el menú desplegable para que pueda ver el resultado de Include Cleanup:
El filtro desplegable está configurado en **Compilar + IntelliSense**. Hay una advertencia visible: VCIC002 : "#include
Otras opciones de configuración
Hay más opciones de limpieza de inclusiones disponibles en Herramientas>Opciones>Editor de texto>C/C++>Limpieza de código:
-
La ordenación incluye: directivas flags
#includeque necesitan ordenación. Elija el nivel de notificación de gravedad del mensaje que aparece en la ventana Lista de errores: Ninguno (característica está desactivada), Sugerencia, Advertencia o Error. -
Estilo: controla cómo
#includese ordenan las instrucciones. Elija Ignorar para ordenar sin tener en cuenta el tipo de delimitadores, Comillas para ordenar las instrucciones include entre comillas por encima de las instrucciones include entre corchetes angulares, o Corchetes angulares para ordenar las instrucciones include entre corchetes angulares por encima de las instrucciones include entre comillas. - Distinguir mayúsculas y minúsculas: Cuando se selecciona, al ordenar, las comparaciones de nombres de archivo distinguen entre mayúsculas y minúsculas. Si está desactivada, la ordenación no distingue entre mayúsculas y minúsculas.
Hay más opciones de Limpieza de inclusiones disponibles en Herramientas>Opciones>Toda la configuración>Lenguajes>C/C++>Limpieza de código>Limpieza de inclusiones:
- Filtrado avanzado: cuando se selecciona, si llama a una función miembro en un objeto de clase derivada, pero la función se define en la clase base, la herramienta no sugiere agregar el encabezado de clase base. Active esta opción para reducir las sugerencias ruidosas cuando los símbolos que use proceden de clases base en lugar del tipo al que se hace referencia directamente.
- Ordenar las directivas #include después de realizar cambios en la limpieza de inclusiones: cuando se selecciona, la función integrada de ordenación de inclusiones se ejecuta después de cualquier acción de limpieza de inclusiones.
- Dar formato a las directivas #include después de realizar cualquier cambio durante la limpieza de inclusiones: Cuando está seleccionado, el comando de formato se ejecuta después de cualquier acción de limpieza de inclusiones.
Configurar Include Cleanup con .editorconfig
La función de limpieza de inclusiones ofrece más opciones, como excluir las inclusiones especificadas de las sugerencias de limpieza e indicar que algunos archivos de cabecera son necesarios para que la herramienta no los marque como no utilizados. Defina estas opciones en un .editorconfig archivo. Agregue este archivo al proyecto para aplicar estilos de codificación coherentes para todos los usuarios que funcionen 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.
La configuración .editorconfig que puede utilizar con Include Cleanup es la siguiente:
| Configuración | Valores | Ejemplo |
|---|---|---|
cpp_include_cleanup_add_missing_error_tag_type
Establece el nivel de error para agregar mensajes de inclusión transitivos. |
nonesuggestionwarningerror |
cpp_include_cleanup_add_missing_error_tag_type = suggestion |
cpp_include_cleanup_alternate_files
Suprimir mensajes para las inclusiones indirectas. Por ejemplo, si #include <windows.h> y solo usa contenido de sus archivos de cabecera incluidos indirectamente, winerror.h o minwindef.h, la herramienta no sugiere añadirlos. |
file1:file2[:file3...][,file4:file5...] |
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
o cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h |
cpp_include_cleanup_excluded_files
Excluye los archivos especificados de los mensajes de limpieza de includes. No obtendrá ninguna sugerencia relacionada con el encabezado en absoluto, ya sea para agregarlo o porque no se está utilizando. |
filename | cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h |
cpp_include_cleanup_remove_unused_error_tag_type
Establece el nivel de error para quitar mensajes de inclusión sin usar. |
nonesuggestionwarningerrordimmed |
cpp_include_cleanup_remove_unused_error_tag_type = dimmed |
cpp_include_cleanup_replacement_files
Reemplaza archivo1 por archivo2 durante el procesamiento de Include Cleanup. Por ejemplo, puede preferir usar cstdio antes que stdio.h. Si tiene un archivo con #include <cstdio> y #include <stdio.h> y solo consume contenido de stdio.h, con esta configuración Include Cleanup le indicará que elimine stdio.h, porque reemplaza el uso de cstdio por stdio.h durante el procesamiento. Si no usas el contenido de cualquiera de ellos, Include Cleanup te indicará que elimines ambos. |
archivo1:archivo2 | cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint |
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_sort_includes_error_tag_type
Establece el nivel de error para los mensajes de sort-includes. none desactiva la característica.
suggestion muestra un ... zigzag y añade un mensaje a la lista de errores.
warning muestra un subrayado ondulado verde y añade una advertencia.
error muestra un subrayado ondulado rojo y agrega un error. |
nonesuggestionwarningerror |
cpp_sort_includes_error_tag_type = suggestion |
cpp_sort_includes_priority_case_sensitive
Cuando true, las comparaciones de ordenación incluyen nombres de archivo que distinguen mayúsculas de minúsculas. Cuando false, la ordenación no distingue mayúsculas de minúsculas. |
truefalse |
cpp_sort_includes_priority_case_sensitive = false |
cpp_sort_includes_priority_style
Controla si la ordenación tiene en cuenta el estilo de corchetes. ignore ordena sin tener en cuenta los corchetes.
quoted ordena las inclusiones entre comillas por encima de las inclusiones entre corchetes angulares.
angle_brackets ordena los include entre corchetes angulares antes de los include entre comillas. |
ignorequotedangle_brackets |
cpp_sort_includes_priority_style = quoted |
La siguiente configuración está disponible a partir de Visual Studio 2026:
| Configuración | Valores | Ejemplo |
|---|---|---|
cpp_include_cleanup_format_after_edits
Cuando true, ejecuta el comando de formato después de cualquier acción de inclusión de limpieza. Resulta útil cuando tiene configurado el formato clang para ordenar las #include directivas. |
truefalse |
cpp_include_cleanup_format_after_edits = true |
cpp_include_cleanup_sort_after_edits
Cuando true, ejecuta la función integrada para ordenar las directivas include después de cualquier acción de limpieza de directivas include. Resulta útil cuando no se usa el formato clang para ordenar las #include directivas. |
truefalse |
cpp_include_cleanup_sort_after_edits = true |
Suprimir los mensajes de inclusiones no utilizadas mediante código
A partir de Visual Studio 2026, puedes suprimir los mensajes de Include Cleanup en una única directiva #include añadiendo un comentario // VCIC-Excluded en la misma línea. La herramienta Incluir limpieza no sugiere quitar esa inclusión, aunque aparezca sin usar. Proporcione texto de justificación opcional después del marcador para que los lectores futuros sepan por qué la inclusión está ahí:
#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below
También puede usar el menú de la bombilla para añadir el comentario // VCIC-Excluded a una directiva #include. Asegúrese de que Herramientas>Opciones>Toda la configuración>Lenguajes>C/C++>Limpieza de código>Limpieza de inclusiones esté activada, ya que está desactivada de forma predeterminada. A continuación, mantenga el cursor sobre la #include línea y seleccione Otras correcciones>Suprimir VCIC002 en source::
El comentario // VCIC-Excluded solo se aplica al #include del archivo. Establecer cpp_include_cleanup_excluded_files en .editorconfig aplica esa exclusión en todos los archivos regidos por ..editorconfig
Consulte también
Descripción general de la limpieza de inclusiones en C/C++
Incluir mensajes de limpieza