Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Od wersji 17.8 Preview 1 program Visual Studio może uporządkować pliki, które #include, aby poprawić jakość kodu w językach C i C++, na następujące sposoby:
- Proponuje dodanie plików nagłówkowych w kodzie, który kompiluje się tylko dlatego, że wymagany plik nagłówkowy jest pośrednio dołączany przez inny plik nagłówkowy.
- Oferty usuwania nieużywanych plików nagłówka — skraca czas kompilacji.
W tym artykule opisano, jak skonfigurować czyszczenie dyrektyw include w programie Visual Studio. Aby uzyskać więcej informacji o funkcji Include Cleanup, zobacz Omówienie funkcji Include Cleanup dla języka C/C++.
Włącz czyszczenie Include
Funkcja „Include Cleanup” jest domyślnie wyłączona.
Włącz tę funkcję, wybierając pozycję Narzędzia>Opcje>Edytor> tekstówC/C++>Oczyszczanie kodu i wybierając pozycję Włącz #include oczyszczanie.
Następnie użyj list rozwijanych, aby skonfigurować ważność powiadomień dotyczących możliwości dodawania nagłówków pośrednich lub usuwania nieużywanych nagłówków:
Pole wyboru **Włącz czyszczenie #include** jest zaznaczone. Zostaną wyświetlone listy rozwijane **Usuń nieużywane, łącznie z poziomem sugestii** i **Dodaj brakujący poziom sugestii**. Wyświetlana jest zawartość listy rozwijanej, a są to: **Tylko refaktoryzacja**, **Sugestia**, **Ostrzeżenie** i **Błąd**. Lista rozwijana **Usuń nieużywane zawiera poziom sugestii** oferuje te same opcje, ale także dodaje **Wygaszone**.
Te opcje określają typ powiadomień o nieużywanych plikach nagłówkowych udostępnianych przez funkcję Include Cleanup:
Wygaszony
Funkcja Include Cleanup wyświetla nieużywane nagłówki, przyciemniając wiersz nieużywanego pliku nagłówka w edytorze kodu i z komunikatem w oknie Lista błędów . W edytorze kodu najedź kursorem na wyszarzone #include, aby otworzyć menu szybkich akcji i wybrać opcję Pokaż potencjalne poprawki, lub kliknij strzałkę listy rozwijanej przy ikonie żarówki, aby zobaczyć akcje związane z nieużywanym plikiem.
Wiersz #include < iostream > jest wygaszony, ponieważ wiersz kodu używający strumienia iostream jest skomentowany. Ten wiersz kodu to // std::cout << "charSize = " << charSize; Menu szybkiej akcji jest również widoczne dla tego wiersza. Mówi, że #include < iostream > nie jest używany w tym pliku i ma link do Pokaż potencjalne poprawki.
Tylko refaktoryzacja: Opcja Dołącz czyszczenie oferuje działania, które można wykonać z menu szybkich akcji w edytorze kodu po najechaniu wskaźnikiem myszy na #include lub po umieszczeniu kursora w wierszu #include i naciśnięciu klawiszy Ctrl+.:
Po najechaniu kursorem na # include iostream pojawi się ikona żarówki z tekstem: „# include iostream nie jest używane w tym pliku”.
Sugestia, Ostrzeżenie, Błąd: Funkcja Include Cleanup może wyświetlać komunikaty funkcji Include Cleanup jako sugestie, ostrzeżenia lub błędy w oknie Lista błędów. Określasz, które z nich. Na poniższym zrzucie ekranu Listy błędów funkcja Include Cleanup jest skonfigurowana tak, aby wyświetlać nieużywane pliki nagłówkowe jako ostrzeżenie. Upewnij się, że na liście rozwijanej filtru jest wybrana opcja Build + Intellisense, aby można było zobaczyć wyniki działania Include Cleanup:
Filtr listy rozwijanej jest ustawiony na **Build + IntelliSense**. Ostrzeżenie jest widoczne: VCIC002 — "#include
Włącz tę funkcję, wybierając pozycję Narzędzia>Opcje> Wszystkiejęzyki>ustawień>C/C++>Oczyszczanie>uwzględnij czyszczenie kodu. Użyj list rozwijanych, aby skonfigurować sposób otrzymywania powiadomień o możliwościach wskazywania nieużywanych dyrektyw #include, dyrektyw #include, które można zoptymalizować (usuwając je po bezpośrednim dodaniu wymaganych przez nie przechodnich dołączeń), oraz brakujących dyrektyw #include, które są dołączane przechodnio.
Zrzut ekranu przedstawiający listy rozwijane umożliwiające wybranie sposobu wyróżniania nieużywanego nagłówka w edytorze kodu, tych, które można zoptymalizować, oraz tych, które są dołączane przechodnio.
Znaczenie opcji:
Wygaszony
Funkcja Include Cleanup wyświetla nieużywane nagłówki, przyciemniając wiersz nieużywanego pliku nagłówka w edytorze kodu i jako komunikat w oknie Lista błędów . W edytorze kodu najedź kursorem na wyszarzone #include, aby wyświetlić menu szybkich akcji i wybrać pozycję Pokaż potencjalne poprawki, lub kliknij menu rozwijane ikony żarówki, aby zobaczyć akcje związane z nieużywanym plikiem.
Wiersz "#include
Brak: nie podejmij żadnych działań. Include Cleanup nadal oferuje akcje, z których można skorzystać w edytorze kodu z poziomu menu szybkich akcji, gdy najedziesz wskaźnikiem myszy na #include, albo po umieszczeniu kursora w wierszu #include i naciśnięciu klawiszy Ctrl+.:
Sugestia, Ostrzeżenie, Błąd: Funkcja Include Cleanup może wyświetlać komunikaty Include Cleanup w oknie Lista błędów jako sugestie, ostrzeżenia lub błędy. Określasz, które z nich. Na poniższym zrzucie ekranu Listy błędów funkcja Include Cleanup jest skonfigurowana tak, aby wyświetlać nieużywane pliki nagłówkowe jako ostrzeżenie. Upewnij się, że na liście rozwijanej filtra jest wybrana opcja Build + Intellisense, aby można było zobaczyć wyniki Include Cleanup:
Filtr listy rozwijanej jest ustawiony na **Build + IntelliSense**. Ostrzeżenie jest widoczne: VCIC002 — "#include
Inne opcje konfiguracji
Więcej opcji Uwzględnij ustawienia oczyszczania są dostępne w obszarze Narzędzia>Opcje>Edytor> tekstuC/C++>Code Cleanup:
-
Sortowanie obejmuje: dyrektywy flag,
#includektóre wymagają sortowania. Wybierz poziom powiadomień o ważności komunikatu wyświetlanego w oknie Lista błędów : Brak (funkcja jest wyłączona), Sugestia, Ostrzeżenie lub Błąd. -
Styl: określa sposób
#includesortowania instrukcji. Wybierz Ignoruj, aby sortować bez uwzględniania rodzaju nawiasów, Cudzysłowy, aby sortować dołączenia w cudzysłowach powyżej dołączeń w nawiasach ostrokątnych, lub Nawiasy ostrokątne, aby sortować dołączenia w nawiasach ostrokątnych powyżej dołączeń w cudzysłowach. - Uwzględnianie wielkości liter: w przypadku wybrania sortowania porównywanie uwzględnia wielkość liter w nazwach plików. Po wyczyszczeniu sortowanie nie uwzględnia wielkości liter.
Więcej ustawień Czyszczenie dyrektyw include jest dostępnych w obszarze Narzędzia>Opcje>Wszystkie ustawienia>Języki>C/C++>Czyszczenie kodu>Czyszczenie dyrektyw include:
- Filtrowanie zaawansowane: po wybraniu, jeśli wywołasz funkcję składową w obiekcie klasy pochodnej, ale funkcja jest zdefiniowana w klasie bazowej, narzędzie nie sugeruje dodania nagłówka klasy bazowej. Włącz tę opcję, aby zmniejszyć hałaśliwe sugestie, gdy symbole, których używasz, pochodzą z klas bazowych, a nie z typu, do którego odwołujesz się bezpośrednio.
- Sortuj dyrektywy #include po wprowadzeniu zmian w ramach czyszczenia dyrektyw include: Po wybraniu tej opcji wbudowana funkcja sortowania dyrektyw include jest uruchamiana po każdym działaniu czyszczenia dyrektyw include.
- Formatuj dyrektywy #include po wprowadzeniu zmian związanych z porządkowaniem dołączeń: Po wybraniu tej opcji polecenie formatowania jest uruchamiane po każdej akcji porządkowania dyrektyw include.
Skonfiguruj funkcję Include Cleanup za pomocą .editorconfig
Funkcja Uwzględnij oczyszczanie ma więcej opcji, takich jak wykluczenie określonych elementów z sugestii oczyszczania i wskazanie, że niektóre pliki nagłówkowe są wymagane, aby narzędzie nie oznaczało ich jako nieużywanych. Zdefiniuj te opcje w pliku .editorconfig. Dodaj ten plik do projektu, aby wymusić spójne style kodowania dla wszystkich, którzy pracują w bazie kodu. Aby uzyskać więcej informacji na temat dodawania .editorconfig pliku do projektu, zobacz Create portable, custom editor settings with EditorConfig (Tworzenie przenośnych, niestandardowych ustawień edytora za pomocą polecenia EditorConfig).
Ustawienia .editorconfig , których można używać z funkcją Include Cleanup, to:
| Ustawienie | Wartości | Przykład |
|---|---|---|
cpp_include_cleanup_add_missing_error_tag_type
Ustawia poziom błędu dla dodawania przechodnich komunikatów dołączania. |
nonesuggestionwarningerror |
cpp_include_cleanup_add_missing_error_tag_type = suggestion |
cpp_include_cleanup_alternate_files
Pomijanie komunikatów dla pośrednich dołączań. Jeśli na przykład #include <windows.h> i używasz tylko zawartości z pośrednio dołączonych nagłówków winerror.h lub minwindef.h, narzędzie nie sugeruje ich dodania. |
file1:file2[:file3...][,file4:file5...] |
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
Lub cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h |
cpp_include_cleanup_excluded_files
Wyklucza określone pliki z komunikatów Include Cleanup. Nie otrzymasz w ogóle sugestii związanej z nagłówkiem, niezależnie od tego, czy ma być dodany, czy jest on nieużywany. |
filename | cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h |
cpp_include_cleanup_remove_unused_error_tag_type
Ustawia poziom błędu dla usuwania nieużywanych komunikatów dołączania. |
nonesuggestionwarningerrordimmed |
cpp_include_cleanup_remove_unused_error_tag_type = dimmed |
cpp_include_cleanup_replacement_files
Zastępuje plik1 plikiem file2 podczas przetwarzania include cleanup. Na przykład możesz preferować użycie cstdio zamiast stdio.h. Jeśli masz plik zawierający zarówno #include <cstdio>, jak i #include <stdio.h>, a korzystasz z treści tylko z stdio.h, to przy tym ustawieniu opcja Include Cleanup poinformuje Cię o konieczności usunięcia stdio.h, ponieważ podczas przetwarzania zastąpiła użycie cstdio elementem stdio.h. Jeśli nie używasz zawartości z obu tych elementów, funkcja Include Cleanup poinformuje Cię o usunięciu obu tych elementów. |
file1:file2 | cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint |
cpp_include_cleanup_required_files
Określ, że użycie pliku file1 wymaga pliku File2. Na przykład określ, że jeśli używasz atlwin.h, musisz również uwzględnić altbase.h. |
file1:file2 | cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h |
cpp_sort_includes_error_tag_type
Ustawia poziom błędu dla komunikatów „sort-includes”. none wyłącza funkcję.
suggestion wyświetla ... falistą linię i dodaje komunikat do listy błędów.
warning wyświetla zielony wywiórz i dodaje ostrzeżenie.
error wyświetla czerwoną falistą linię i zgłasza błąd. |
nonesuggestionwarningerror |
cpp_sort_includes_error_tag_type = suggestion |
cpp_sort_includes_priority_case_sensitive
W przypadku true, funkcja sortowania porównuje uwzględnia wielkość liter w nazwach plików. W przypadku false, sortowanie jest bez uwzględniania wielkości liter. |
truefalse |
cpp_sort_includes_priority_case_sensitive = false |
cpp_sort_includes_priority_style
Określa, czy sortowanie uwzględnia styl nawiasów. ignore sortuje, nie uwzględniając nawiasów.
quoted sorts quoted zawiera powyżej nawiasu kątowego.
angle_brackets sortuje nawias kątowy zawierający powyższe cudzysłowie. |
ignorequotedangle_brackets |
cpp_sort_includes_priority_style = quoted |
Następujące ustawienia są dostępne od Visual Studio 2026 r.:
| Ustawienie | Wartości | Przykład |
|---|---|---|
cpp_include_cleanup_format_after_edits
Po włączeniu tej opcji trueuruchamia polecenie formatowania po każdej akcji Include Cleanup. Przydatne, gdy masz skonfigurowane narzędzie clang-format do sortowania dyrektyw #include. |
truefalse |
cpp_include_cleanup_format_after_edits = true |
cpp_include_cleanup_sort_after_edits
Gdy trueprogram uruchamia wbudowaną funkcję sortowania dołączaną po dowolnej akcji Wyczyść uwzględnij. Przydatne, gdy nie używasz formatu clang do sortowania #include dyrektyw. |
truefalse |
cpp_include_cleanup_sort_after_edits = true |
Pomijanie nieużywanych komunikatów dołączanych za pomocą kodu
Od programu Visual Studio 2026 można ukryć komunikaty Include Cleanup dla pojedynczej dyrektywy #include, dodając komentarz // VCIC-Excluded w tym samym wierszu. Narzędzie Oczyszczanie dyrektyw include nie sugeruje usunięcia tej dyrektywy include, nawet jeśli wydaje się ona nieużywana. Podaj opcjonalny tekst uzasadnienia po znaczniku, aby w przyszłości czytelnicy wiedzieli, dlaczego istnieje dołączanie:
#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below
Możesz również użyć menu z ikoną żarówki, aby dodać komentarz // VCIC-Excluded do dyrektywy #include. Upewnij się, że opcja Oczyszczanie dyrektyw include jest włączona w Narzędzia>Opcje>Wszystkie ustawienia>Języki>C/C++>Oczyszczanie kodu>Oczyszczanie dyrektyw include, ponieważ ta opcja jest domyślnie wyłączona. Następnie umieść kursor nad wierszem #include , wybierz pozycję Inne poprawki>Pomiń VCIC002 w źródle::
Komentarz // VCIC-Excluded dotyczy tylko elementu #include dla pliku. Ustawienie cpp_include_cleanup_excluded_files w .editorconfig powoduje zastosowanie tego wykluczenia w każdym pliku objętym przez .editorconfig.
Zobacz też
Omówienie porządkowania dyrektyw include w C/C++
Uwzględnij komunikaty dotyczące czyszczenia