Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начиная с версии 17.8 Preview 1, Visual Studio может выполнять очистку файлов, которые вы #include, чтобы повысить качество кода C и C++ следующими способами:
- Предлагает добавлять файлы заголовков для кода, который компилируется только потому, что необходимый файл заголовка включается косвенно другим файлом заголовка.
- Предложения по удалению неиспользуемых файлов заголовков— улучшение времени сборки.
В этой статье описывается настройка включения очистки в Visual Studio. Дополнительные сведения о Include Cleanup см. в статье Обзор Include Cleanup для C/C++.
Включить параметр «Очистка»
Функция очистки включения отключена по умолчанию.
Включите это, выбрав Сервис>Параметры>Текстовый редактор>C/C++>Code Cleanup и выбрав Включить очистку #include.
Затем используйте раскрывающийся список, чтобы настроить серьезность уведомлений о возможностях добавления косвенных заголовков или удаления неиспользуемых заголовков:
Установлен флажок **Включить очистку #include** . Отображаются раскрывающиеся списки для параметров **Уровень предложений по удалению неиспользуемых директив include** и **Уровень предложений по добавлению отсутствующих директив include**. Отображается содержимое раскрывающегося списка: **Рефакторинг только**, **Предложение**, **Предупреждение** и **Ошибка**. В раскрывающемся списке **Удаление неиспользуемых включает уровень предложения** одинаковые параметры, но также добавляет **Dimmed**.
Эти параметры определяют, какие уведомления о неиспользуемых заголовках выводит функция Include Cleanup:
Приглушённый
Include Cleanup показывает неиспользуемые заголовки, приглушая строку неиспользуемого файла заголовка в редакторе кода, а также выводя сообщение в окне Список ошибок. В редакторе кода наведите указатель мыши на приглушённый #include, чтобы открыть меню быстрых действий, и выберите Показать возможные исправления или щёлкните раскрывающийся список у значка лампочки, чтобы увидеть действия, связанные с неиспользуемым файлом.
Строка #include < iostream > отображается приглушённо, поскольку строка кода с использованием iostream закомментирована. Эта строка кода выглядит так: // std::cout << "charSize = " << charSize; Для этой строки кода также отображается меню быстрых действий. В нем говорится, что #include < iostream > не используется в этом файле и содержит ссылку на отображение потенциальных исправлений.
Только рефакторинг: команда «Включить очистку» предоставляет действия, которые можно выполнить через меню быстрых действий в редакторе кода, когда вы наводите указатель мыши на #include или помещаете курсор на строку #include и нажимаете Ctrl+точка:
При наведении курсора на #include iostream появляется значок лампочки с текстом о том, что #include iostream не используется в этом файле.
Предложение, предупреждение, ошибка: функция «Очистка включаемых файлов» может отображать сообщения очистки включаемых файлов как предложения, предупреждения или ошибки в окне Список ошибок. Вы определяете, какой из них. На следующем снимке экрана списка Error List функция Include Cleanup настроена на отображение неиспользуемых заголовочных файлов с предупреждением. Убедитесь, что в раскрывающемся фильтре выбран параметр Build + Intellisense, чтобы можно было увидеть выходные данные Include Cleanup:
В раскрывающемся фильтре установлено значение **Build + IntelliSense**. Предупреждение видно: VCIC002 - "#include
Включите эту функцию, выбрав Сервис>Параметры>Все параметры>Языки>C/C++>Очистка кода>Очистка директив include. Используйте раскрывающиеся списки, чтобы настроить, как вы хотите получать уведомления о возможности выделения неиспользуемых директив #include, директив #include, которые можно оптимизировать (удалив их после прямого добавления необходимых транзитивных включений), и отсутствующих директив #include, которые включаются транзитивно.
Снимок экрана, показывающий раскрывающиеся списки для выбора способа выделения неиспользуемого заголовочного файла в редакторе кода, заголовочных файлов, которые можно оптимизировать, и тех, которые включены транзитивно.
Значение параметров:
Приглушённый
Очистка директив include показывает неиспользуемые заголовки, приглушая строку неиспользуемого заголовочного файла в редакторе кода, а также выводя сообщение в окне Error List. В редакторе кода наведите указатель мыши на приглушённый #include, чтобы открыть меню быстрых действий, и выберите Показать возможные исправления или щёлкните раскрывающийся список у значка лампочки, чтобы увидеть действия, связанные с неиспользуемым файлом.
Строка с `#include
Нет: не предпринять никаких действий. Функция Include Cleanup по-прежнему предоставляет доступ к действиям, которые можно выполнить в редакторе кода через меню быстрых действий: наведите указатель мыши на элемент #include или поместите курсор на строку #include и нажмите Ctrl+точка:
Предложение, предупреждение, ошибка: Include Cleanup может отображать сообщения Include Cleanup как предложения, предупреждения или ошибки в окне «Список ошибок». Вы определяете, какой из них. На следующем снимке экрана списка ошибок функция Include Cleanup настроена так, чтобы отображать неиспользуемые заголовки как предупреждения. Убедитесь, что в раскрывающемся списке фильтра выбран пункт Build + IntelliSense, чтобы можно было увидеть выходные данные Include Cleanup:
Для раскрывающегося фильтра установлено значение **Build + IntelliSense**. Предупреждение видно: VCIC002 - "#include
Другие параметры конфигурации
Дополнительные параметры очистки включаются в разделе "Параметрытекстового редактора>инструментов>>" C/C++>Code Cleanup:
-
Сортировка включает: директивы flags
#include, требующие сортировки. Выберите уровень уведомлений о серьезности сообщения, которое отображается в окне списка ошибок : нет (функция отключена), предложение, предупреждение или ошибка. -
Стиль: Определяет, как сортируются
#includeинструкции. Выберите Игнорировать, чтобы сортировать без учета стиля скобок, Кавычки, чтобы размещать `#include` в кавычках выше `#include` в угловых скобках, или Угловые скобки, чтобы размещать `#include` в угловых скобках выше `#include` в кавычках. - С учетом регистра: Если этот параметр включен, при сортировке имена файлов сравниваются с учетом регистра. Когда флажок снят, сортировка выполняется без учёта регистра.
Дополнительные параметры очистки директив include доступны в разделе Сервис>Параметры>Все параметры>Языки>C/C++>Очистка кода>Очистка директив include:
- Расширенная фильтрация. Если вы вызываете функцию-член для объекта производного класса, но функция определена в базовом классе, средство не предлагает добавить заголовок базового класса. Включите этот параметр, чтобы уменьшить количество лишних подсказок, когда используемые вами символы берутся из базовых классов, а не из типа, к которому вы обращаетесь напрямую.
- Сортировать директивы #include после любых изменений при очистке include: если этот параметр выбран, встроенная функция сортировки include запускается после выполнения любой операции очистки include.
- Форматировать директивы #include после внесения изменений при очистке include-директив: Если этот параметр выбран, команда форматирования выполняется после любой операции очистки include-директив.
Настройте Include Cleanup с помощью .editorconfig
Функция очистки директив include предлагает дополнительные возможности, например исключение указанных директив include из рекомендаций по очистке, а также указание, что некоторые файлы заголовков являются обязательными, чтобы инструмент не помечал их как неиспользуемые. Определите эти параметры в .editorconfig файле. Добавьте этот файл в проект, чтобы обеспечить согласованные стили программирования для всех, кто работает в базе кода. Дополнительные сведения о добавлении файла в проект см. в статье "Создание переносимых .editorconfig пользовательских параметров редактора" с помощью EditorConfig.
Параметры .editorconfig, которые можно использовать при очистке включаемых файлов:
| Настройка | Значения | Пример |
|---|---|---|
cpp_include_cleanup_add_missing_error_tag_type
Задает уровень ошибки для добавления транзитивных сообщений. |
nonesuggestionwarningerror |
cpp_include_cleanup_add_missing_error_tag_type = suggestion |
cpp_include_cleanup_alternate_files
Супрессия сообщений для непрямых включений. Например, если вы #include <windows.h> и используете только содержимое из косвенно включённых через него заголовков winerror.h или minwindef.h, инструмент не предлагает добавлять их. |
file1:file2[:file3...][,file4:file5...] |
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
Или cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h |
cpp_include_cleanup_excluded_files
Исключает указанные файлы из сообщений Include Cleanup. Вы не получите предложение, связанное с заголовком, независимо от того, следует ли добавить его или что оно не используется. |
filename | cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h |
cpp_include_cleanup_remove_unused_error_tag_type
Задает уровень ошибки для удаления неиспользуемых сообщений. |
nonesuggestionwarningerrordimmed |
cpp_include_cleanup_remove_unused_error_tag_type = dimmed |
cpp_include_cleanup_replacement_files
Заменяет file1 на file2 при обработке очистки включаемых файлов. Например, вы можете предпочесть использовать cstdio вместо stdio.h. Если у вас есть файл, который содержит и #include <cstdio>, и #include <stdio.h>, и вы используете содержимое только из stdio.h, то при этой настройке Include Cleanup предложит вам удалить stdio.h, поскольку в процессе обработки она заменила использование cstdio на stdio.h. Если вы не используете содержимое ни из одного из них, Include Cleanup предложит удалить оба. |
file1:file2 | cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint |
cpp_include_cleanup_required_files
Укажите, что для использования file1 требуется файл2. Например, укажите, что если вы используете atlwin.h это altbase.h также должно быть включено. |
file1:file2 | cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h |
cpp_sort_includes_error_tag_type
Задает уровень ошибок для сообщений sort-includes. none отключает функцию.
suggestion отображает волнистую ... линию и добавляет сообщение в список ошибок.
warning отображает зелёную волнистую линию и выводит предупреждение.
error отображает красную волнистую линию и добавляет ошибку. |
nonesuggestionwarningerror |
cpp_sort_includes_error_tag_type = suggestion |
cpp_sort_includes_priority_case_sensitive
Когда true, при сортировке сравнение имён файлов выполняется с учётом регистра. Если false, сортировка не учитывает регистр. |
truefalse |
cpp_sort_includes_priority_case_sensitive = false |
cpp_sort_includes_priority_style
Определяет, учитывается ли стиль скобок при сортировке. ignore сортируется без учета квадратных скобок.
quoted сортирует директивы include в кавычках выше директив include в угловых скобках.
angle_brackets Сортирует директивы include в угловых скобках перед директивами include в кавычках. |
ignorequotedangle_brackets |
cpp_sort_includes_priority_style = quoted |
Следующие параметры доступны начиная с Visual Studio 2026 г.
| Настройка | Значения | Пример |
|---|---|---|
cpp_include_cleanup_format_after_edits
Когда true, выполняет команду форматирования после любого действия «Включить очистку». Полезно, если у вас clang-format настроен для сортировки директив #include. |
truefalse |
cpp_include_cleanup_format_after_edits = true |
cpp_include_cleanup_sort_after_edits
При trueвыполнении встроенной функции сортировки после любого действия "Включить очистку". Полезно, если вы не используете clang-format для сортировки #include директив. |
truefalse |
cpp_include_cleanup_sort_after_edits = true |
Подавление неиспользуемых сообщений с помощью кода
Начиная с Visual Studio 2026, можно подавить сообщения Include Cleanup для отдельной директивы #include, добавив комментарий // VCIC-Excluded в той же строке. Средство очистки директив include не предлагает удалить эту директиву include, даже если кажется, что она не используется. Предоставьте необязательный текст обоснования после маркера, чтобы будущие читатели знали, почему включено:
#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below
Вы также можете использовать меню с лампочкой, чтобы добавить комментарий // VCIC-Excluded к директиве #include. Убедитесь, что параметр Include Cleanup включён через Инструменты>Параметры>Все параметры>Языки>C/C++>Очистка кода>Include Cleanup, так как этот параметр по умолчанию отключён. Затем наведите указатель мыши на строку #include, выберите Другие исправления>Подавить VCIC002 в исходном коде::
Комментарий // VCIC-Excluded применяется только к #include файлу. Указание cpp_include_cleanup_excluded_files в .editorconfig применяет это исключение ко всем файлам, на которые распространяется действие .editorconfig.