Konfigurace vyčištění zahrnutí C/C++ v sadě Visual Studio

Počínaje verzí 17.8 Preview 1 může Visual Studio vyčistit soubory, které #include, a zlepšit tak kvalitu vašeho kódu v jazycích C a C++ následujícími způsoby:

  • Nabízí přidání souborů hlaviček pro kód, který se zkompiluje pouze proto, že potřebný hlavičkový soubor je nepřímo zahrnut jiným hlavičkovým souborem.
  • Nabízí odebrání nepoužívaných souborů hlaviček– což zlepšuje časy sestavení.

Tento článek popisuje, jak nakonfigurovat funkci Zahrnout vyčištění v sadě Visual Studio. Další informace o zahrnutí vyčištění naleznete v tématu C/C++ Include Cleanup overview.

Zapněte možnost Zahrnout vyčištění

Funkce Zahrnout vyčištění je ve výchozím nastavení vypnutá.

Zapněte ho tak, že vyberete Nástroje>Možnosti>textového editoru>C/C++>Vyčištění kódu a vyberete Povolit #include vyčištění.

Potom pomocí rozevíracích seznamu nakonfigurujte závažnost oznámení o příležitostech přidat nepřímé hlavičky nebo odebrat nepoužívané hlavičky:

Dialogové okno Možnosti nástrojů otevřené při vyčištění kódu v textovém editoru > C/C++ > .

Je zaškrtnuté políčko **Povolit vyčištění direktiv #include**. Zobrazí se rozevírací seznamy pro **Odebrat nepoužité položky včetně úrovně návrhu** a **Přidání chybějící úrovně návrhu**. Zobrazí se obsah rozevíracího seznamu: **Pouze refaktoring**, **Návrh**, **Varování** a **Chyba**. Rozevírací seznam **Odebrat nepoužité položky zahrnuje úroveň návrhu** stejné možnosti, ale také přidá **Dimmed**.

Tyto možnosti určují typ oznámení, které funkce Include Cleanup poskytuje o nepoužívaných hlavičkách:

Ztlumil

Funkce Include Cleanup zobrazuje nepoužívané hlavičky ztlumením řádku nepoužívaného hlavičkového souboru v editoru kódu a zprávou v okně Seznam chyb. V editoru kódu najeďte ukazatelem na ztlumený symbol #include, aby se zobrazila nabídka rychlých akcí, a zvolte Zobrazit potenciální opravy, nebo klikněte na rozevírací nabídku žárovky, aby se zobrazily akce související s nepoužívaným souborem.

Snímek obrazovky se zašedlým řádkem #include < iostream >.

Řádek s #include < iostream > je zobrazen tlumeně, protože řádek kódu, který používá knihovnu iostream, je zakomentovaný. Daný řádek kódu je // std::cout << "charSize = " << charSize; Pro tento řádek je také viditelné menu rychlých akcí. Uvádí, že #include < iostream > se v tomto souboru nepoužívá a obsahuje odkaz na zobrazení potenciálních oprav.

Jen refaktoring: Volba Zahrnout vyčištění nabízí akce, které můžete provést prostřednictvím nabídky rychlých akcí v editoru kódu, když najedete ukazatelem myši na #include nebo umístíte kurzor na řádek #include a stisknete Ctrl+.

Snímek rychlé akce k odebrání nepoužívaného záhlaví.

Když umístíte ukazatel myši na #include iostream, zobrazí se ikona žárovky s textem, že #include iostream se v tomto souboru nepoužívá.

Návrh, upozornění, chyba: Zahrnutí vyčištění může v okně Seznam chyb zobrazit zprávy o vyčištění jako návrhy, upozornění nebo chyby. Určíte, které. Na následujícím snímku obrazovky se seznamem chyb je nakonfigurováno zahrnout vyčištění tak, aby zobrazovalo nepoužívané hlavičky s upozorněním. Ujistěte se, že je v rozevíracím filtru vybraná možnost Build + IntelliSense, abyste mohli zobrazit výstup Include Cleanup:

Snímek obrazovky s oknem Seznam chyb

Filtr rozevíracího seznamu je nastavený na **Build + IntelliSense**. Zobrazí se upozornění: VCIC002 – v tomto souboru se nepoužívá #include .

Zapněte ho tak, že vybereteMožnosti>nástrojů> Všechnyjazyky>nastavení>C/C++>Vyčištění kódu> kódu. Pomocí rozevíracích nabídek můžete nastavit, jak chcete být upozorňováni na možnosti zvýraznění nepoužívaných direktiv #include, direktiv #include, které lze optimalizovat (odebrat po přímém přidání jejich požadovaných tranzitivních include), a chybějících direktiv #include, které jsou zahrnuty tranzitivně.

Snímek obrazovky dialogového okna Možnosti otevřeného na cestě Všechna nastavení > Jazyky > C/C++ > Vyčištění kódu > Vyčištění direktiv include.

Snímek obrazovky s rozevíracími seznamy pro výběr způsobu zvýraznění nepoužívané hlavičky v editoru kódu, těch, které je možné optimalizovat, a těch, které jsou přechodné.

Význam možností:

Ztlumil

Vyčištění direktiv include zobrazuje nepoužívané hlavičkové soubory ztlumením řádku nepoužívaného hlavičkového souboru v editoru kódu a také jako zprávu v okně Seznam chyb. V editoru kódu najeďte ukazatelem na ztlumený prvek #include, aby se zobrazila nabídka rychlých akcí, a zvolte Zobrazit možné opravy, nebo klikněte na rozevírací nabídku u ikony žárovky, aby se zobrazily akce související s nepoužívaným souborem.

Snímek obrazovky se zašedlým řádkem #include < iostream >.

Řádek pro `#include ` je ztlumený, protože řádek kódu, který využívá `iostream`, je zakomentovaný. Konkrétně jde o tento řádek kódu: `// std::cout << "charSize = " << charSize;`. U tohoto řádku je také viditelná nabídka rychlých akcí. Uvádí, že `#include ` není v tomto souboru použitý, a obsahuje odkaz na **Zobrazit možná řešení**.

Žádná: Neprovádějte žádnou akci. Include Cleanup stále nabízí akce, které můžete v editoru kódu provést prostřednictvím nabídky rychlých akcí, když najedete ukazatelem myši na #include, nebo umístíte kurzor na řádek #include a stisknete Ctrl+.:

Návrh, upozornění, chyba: Zahrnutí vyčištění může v okně Seznam chyb zobrazit zprávy o vyčištění jako návrhy, upozornění nebo chyby. Určíte, které. Na následujícím snímku obrazovky okna Error List je nástroj Include Cleanup nakonfigurován tak, aby nepoužívané hlavičky zobrazoval jako upozornění. Ujistěte se, že je ve filtru v rozevíracím seznamu vybrána možnost Build + Intellisense, abyste mohli zobrazit výstup Include Cleanup:

Snímek obrazovky s oknem Seznam chyb

Filtr rozevíracího seznamu je nastavený na **Build + IntelliSense**. Zobrazí se upozornění: VCIC002 – v tomto souboru se nepoužívá #include .

Další možnosti konfigurace

Další nastavení zahrnout vyčištění jsou k dispozici v části Nástroje>Možnosti>textového editoru>C/C++>Vyčištění kódu:

  • Řazení zahrnuje: direktivy flags #include , které potřebují řazení. Zvolte úroveň oznámení závažnosti zprávy, která se zobrazí v okně Seznam chyb : Žádná (funkce je vypnutá ), Návrh, Upozornění nebo Chyba.
  • Styl: Určuje způsob #include řazení příkazů. Zvolte Ignorovat, chcete-li řadit bez ohledu na typ závorek, Uvozovky, chcete-li řadit include s uvozovkami nad include se špičatými závorkami, nebo Špičaté závorky, chcete-li řadit include se špičatými závorkami nad include s uvozovkami.
  • Rozlišovat malá a velká písmena: Je-li vybráno, při řazení se názvy souborů porovnávají s rozlišením malých a velkých písmen. Při vymazání se řazení nerozlišuje malá a velká písmena.

Snímek obrazovky možností aplikace Visual Studio se zvýrazněnými nastaveními Upřesnit filtrování, Řadit po úpravách, Řadit položky Include, Priorita řazení, Styl a Rozlišovat velká a malá písmena.

Další nastavení Vyčištění direktiv include jsou k dispozici v části Nástroje>Možnosti>Všechna nastavení>Jazyky>C/C++>Vyčištění kódu>Vyčištění direktiv include:

  • Rozšířené filtrování: Pokud při výběru voláte členskou funkci u odvozeného objektu třídy, ale funkce je definována v základní třídě, nástroj nenavrhuje přidání hlavičky základní třídy. Tuto možnost zapněte, pokud chcete omezit hlučné návrhy, pokud symboly, které používáte, pocházejí ze základních tříd, a ne z typu, na který odkazujete přímo.
  • Seřadit direktivy #include po všech úpravách v rámci vyčištění include: Je-li tato možnost vybrána, po každé akci Vyčištění direktiv include se spustí integrovaná funkce řazení direktiv include.
  • Formátovat direktivy #include po jakýchkoli úpravách při čištění direktiv include: Je-li tato možnost vybrána, příkaz pro formátování se spustí po jakékoli akci čištění direktiv include.

Snímek obrazovky Visual Studio Zahrnout možnosti čištění se zvýrazněným rozšířeným filtrováním, řazením a formátováním

Nastavení možnosti Zahrnout vyčištění pomocí .editorconfig

Funkce Include Cleanup nabízí další možnosti, například vyloučit zadané direktivy #include z návrhů čištění a označit některé hlavičkové soubory jako povinné, aby je nástroj neoznačil jako nepoužívané. Definujte tyto možnosti v .editorconfig souboru. Přidejte tento soubor do projektu a vynucujte konzistentní styly kódování pro všechny uživatele, kteří pracují v základu kódu. Další informace o přidání .editorconfig souboru do projektu naleznete v tématu Vytvoření přenosného vlastního nastavení editoru pomocí EditorConfig.

Nastavení .editorconfig , která můžete použít s příkazem Zahrnout vyčištění, jsou:

Nastavení Hodnoty Příklad
cpp_include_cleanup_add_missing_error_tag_type

Nastaví úroveň chyb u zpráv o transitivním zahrnutí.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_alternate_files

Potlačit zprávy pro nepřímé zahrnutí. Pokud například #include <windows.h> a používáte pouze obsah z nepřímo zahrnutých hlavičkových souborů winerror.h nebo minwindef.h, nástroj nenavrhuje jejich přidání.
file1:file2[:file3...][,file4:file5...] cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
Nebo
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h
cpp_include_cleanup_excluded_files

Vyloučí zadané soubory ze zpráv Zahrnout vyčištění. Nebudete mít vůbec žádný návrh související k záhlaví, ať už ho přidáte, nebo jej nepoužijete.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_remove_unused_error_tag_type

Nastaví úroveň chyby pro odebrání nepoužívaných zpráv zahrnutí.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_replacement_files

Nahradí soubor 1 souborem 2 během zpracování zahrnutí vyčištění. Můžete například raději použít více cstdionež stdio.h . Pokud máte soubor obsahující `#include <cstdio>` i `#include <stdio.h>` a obsah používáte pouze z `stdio.h`, toto nastavení Include Cleanup vás vyzve k odstranění `stdio.h`, protože při zpracování nahradilo použití `cstdio` za `stdio.h`. Pokud nepoužíváte obsah ani jednoho z nich, nástroj Include Cleanup vás upozorní, abyste odstranili oba.
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_required_files

Zadejte, že použití souboru1 vyžaduje soubor2. Uveďte například, že pokud použijete atlwin.h, musí být zahrnuto také altbase.h.
file1:file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_sort_includes_error_tag_type

Nastaví úroveň závažnosti chybových zpráv sort-includes. none vypne funkci. suggestion zobrazí ... vlnovitou čáru a přidá zprávu do seznamu chyb. warning zobrazí zelenou vlnovku a přidá upozornění. error zobrazí červenou vlnovku a přidá chybové hlášení.
none
suggestion
warning
error
cpp_sort_includes_error_tag_type = suggestion
cpp_sort_includes_priority_case_sensitive

Při trueporovnávání při řazení rozlišují názvy souborů malá a velká písmena. Pokud je nastaveno false, řazení nerozlišuje malá a velká písmena.
true
false
cpp_sort_includes_priority_case_sensitive = false
cpp_sort_includes_priority_style

Určuje, jestli řazení bere v úvahu styl závorek. ignore řadí bez ohledu na závorky. quoted řazení v uvozových závorkách zahrnuje nad úhlovou závorku. angle_brackets seřadí úhlovou závorku včetně výše uvedených uvozových závorek.
ignore
quoted
angle_brackets
cpp_sort_includes_priority_style = quoted

Od Visual Studio 2026 jsou k dispozici následující nastavení:

Nastavení Hodnoty Příklad
cpp_include_cleanup_format_after_edits

Po truespustí příkaz k formátování po jakékoli akci „Include Cleanup“. Užitečné, pokud máte clang-format nakonfigurovaný pro řazení #include direktiv.
true
false
cpp_include_cleanup_format_after_edits = true
cpp_include_cleanup_sort_after_edits

Když truespustíte integrovanou funkci řazení po jakékoli akci Zahrnout vyčištění. Užitečné, když k řazení #include direktiv nepoužíváte clang-format.
true
false
cpp_include_cleanup_sort_after_edits = true

Potlačení nepoužívaných zpráv zahrnutí prostřednictvím kódu

Od sady Visual Studio 2026 můžete potlačit zprávy Include Cleanup u jedné direktivy #include přidáním komentáře // VCIC-Excluded na stejný řádek. Nástroj Vyčištění direktiv include nenavrhuje odebrání této direktivy include, ani když se jeví jako nepoužitá. Zadejte volitelný text odůvodnění za značkou, aby budoucí čtenáři věděli, proč je k dispozici:

#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below

K přidání komentáře // VCIC-Excluded do direktivy #include můžete také použít nabídku žárovky. Ujistěte se, že je funkce Vyčištění direktiv include zapnutá prostřednictvím Nástroje>Možnosti>Všechna nastavení>Jazyky>C/C++>Vyčištění kódu>Vyčištění direktiv include, protože je ve výchozím nastavení vypnutá. Pak najeďte kurzorem na řádek #include a vyberte Další opravy>Potlačit VCIC002 ve zdroji::

Snímek obrazovky nabídky žárovky ve Visual Studiu, na kterém je zobrazena možnost Potlačit VCIC002 ve zdrojovém kódu.

Komentář // VCIC-Excluded se vztahuje pouze na #include soubor. Nastavení cpp_include_cleanup_excluded_files v .editorconfig uplatní toto vyloučení ve všech souborech, které se řídí prvkem .editorconfig.

Viz také

Přehled vyčištění V jazyce C/C++
Zahrnout zprávy o vyčištění