Настройка очистки включения C/C++ в Visual Studio
Начиная с версии 17.8 ( предварительная версия 1), Visual Studio может очистить свои #include
s, чтобы улучшить качество кода 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 > неактивна, так как строка кода, использующая 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 <cstdio> #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 |