Поделиться через


Настройка очистки включения C/C++ в Visual Studio

Начиная с версии 17.8 ( предварительная версия 1), Visual Studio может очистить свои #includes, чтобы улучшить качество кода C и C++ следующими способами:

  • Предлагает добавлять файлы заголовков для кода, который компилируется только потому, что необходимый файл заголовка включается косвенно другим файлом заголовка.
  • Предложения по удалению неиспользуемых файлов заголовков— улучшение времени сборки.

В этой статье описывается настройка включения очистки в Visual Studio. Дополнительные сведения о включении очистки см. в обзоре очистки Включаемого кода C/C++.

Включение очистки

Функция очистки включения включена по умолчанию. Если он не активен, его можно включить с помощью >текстового редактора>параметров>инструментов C/C++>Code Cleanup и нажмите кнопку "Включить #include очистку".

Затем используйте раскрывающийся список, чтобы настроить способ уведомления о возможностях добавления косвенных заголовков или удаления неиспользуемых заголовков:

Диалоговое окно

Установлен флажок "Включить# включить очистку". Раскрывающиеся списки для удаления неиспользуемых включают уровень предложения и добавление отсутствующих включает уровень предложения, отображаются. Отображается содержимое раскрывающегося списка: **Рефакторинг только**, **Предложение**, **Предупреждение** и **Ошибка**. Раскрывающийся список **Удаление неиспользуемых включает уровень предложения** предлагает те же параметры, но также добавляет неактивные.

Значения параметров уровня предложения:

Только рефакторинг. Включить очистку предлагает действия, которые можно выполнить с помощью меню быстрого действия при наведении указателя мыши на #includeстроку или наведите курсор на #include строку и нажмите клавиши CTRL+PERIOD:

Снимок экрана: быстрое действие для удаления неиспользуемого заголовка

При наведении курсора на #include iostream отображается лампочка с текстом, который #include iostream не используется в этом файле".

Предложение, предупреждение, ошибка: включение очистки предлагает действия, которые могут выполняться с помощью предложений, предупреждений или ошибок в окне списка ошибок. Вы определяете, какой из них. На следующем снимке экрана списка ошибок для отображения неиспользуемых заголовков с предупреждением настроено включение очистки. Убедитесь, что в раскрывающемся фильтре выбрана сборка и Intellisense , чтобы просмотреть выходные данные "Включить очистку":

Снимок экрана: окно списка ошибок.

В раскрывающемся списке задано значение Build + IntelliSense. Предупреждение отображается: VCIC002 — #include < > iostream не используется в этом файле».

Серым цветом

Включить очистку отображаются неиспользуемые заголовки путем уменьшения строки неиспользуемого файла заголовка в редакторе кода. Наведите указатель мыши на неактивный #include , чтобы открыть меню быстрого действия и выберите "Показать потенциальные исправления" или щелкните раскрывающийся список лампочки, чтобы просмотреть действия, связанные с неиспользуемым файлом.

Снимок экрана: неактивный #include строке < iostream > .

Строка для #include < iostream > неактивна, так как строка кода, использующая iostream, закомментирована. Эта строка кода : //std::cout << "charSize =" << charSize; Меню быстрого действия также отображается для этой строки. В нем говорится, что #include < iostream > не используется в этом файле и содержит ссылку на отображение потенциальных исправлений.

Настройка очистки включения с помощью .editorconfig

Существует больше параметров настройки очистки включения, например исключения указанных включений из предложений очистки, указывая, что некоторые файлы заголовков необходимы, чтобы средство не помечает их как неиспользуемые и т. д. Эти параметры определяются в файле, который можно добавить в .editorconfig проект, среди прочего, применять согласованные стили программирования для всех, кто работает в базе кода. Дополнительные сведения о добавлении файла в проект см. в статье "Создание переносимых .editorconfig пользовательских параметров редактора" с помощью EditorConfig.

Параметры .editorconfig , которые можно использовать с очисткой включения:

Параметр Значения Пример
cpp_include_cleanup_add_missing_error_tag_type

Задает уровень ошибки при добавлении транзитивных сообщений.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Задает уровень ошибки удаления неиспользуемых сообщений.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Исключает указанные файлы из сообщений "Включить очистку". Вы не получите предложение, связанное с заголовком, независимо от того, следует ли добавить его или что оно не используется.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
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_include_cleanup_replacement_files

Заменяет файл1 файлом 2 во время обработки очистки включения. Например, вы можете предпочесть использовать cstdio его.stdio.h Если у вас есть файл с #include <cstudio> #include <stdio.h> обоими и вы используете содержимое только из stdio.hэтого параметра, при этом параметр include Cleanup сообщит вам удалить stdio.h , так как он заменил использование cstdio с помощью stdio.h во время обработки. Если содержимое из него не используется, включите очистку, чтобы удалить оба.
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

Не создавайте сообщение для косвенного включения file2 , если файл1 включен. Например, если вы #include <windows.h> и используете только что-то из его косвенно включенного заголовка winerror.h, включение очистки не будет запрашивать добавление winerror.h. Полезно, если вы предпочитаете включать файл заголовка фасада вместо непрямого включаемого.
file1:file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

См. также

Обзор очистки в C/C++
Включение сообщений очистки