Konfigurieren der C/C++-Include-Bereinigung in Visual Studio

Ab 17.8 Preview 1 kann Visual Studio Ihre #include-Anweisungen bereinigen, um die Qualität von C- und C++-Code auf folgende Weise zu verbessern:

  • Bietet das Hinzufügen von Headerdateien für Code, der nur kompiliert wird, weil eine erforderliche Headerdatei indirekt von einer anderen Headerdatei eingeschlossen wird.
  • Bietet an, nicht verwendete Headerdateien zu entfernen, um Buildzeiten und Codeübersichtlichkeit zu verbessern.

In diesem Artikel wird beschrieben, wie Sie die Include-Bereinigung in Visual Studio konfigurieren. Weitere Informationen zur Include-Bereinigung finden Sie unter Übersicht über die C/C++-Include-Bereinigung.

Aktivieren der Include-Bereinigung

Das Feature für die Include-Bereinigung ist standardmäßig aktiviert. Wenn sie nicht aktiv ist, können Sie sie über Extras>Optionen>Text-Editor>C/C++>Codebereinigung aktivieren und #include-Bereinigung aktivieren auswählen.

Konfigurieren Sie dann mithilfe der Dropdownmenüs, wie Sie über Möglichkeiten zum Hinzufügen indirekter Header oder zum Entfernen nicht verwendeter Header benachrichtigt werden möchten:

The Tools options dialog opened at Text Editor > C/C++ > Code Cleanup.

Das Kontrollkästchen „#include-Bereinigung aktivieren“ ist aktiviert. Die Dropdownmenüs für „Vorschlagsebene für Entfernen nicht verwendeter include-Anweisungen“ und „Vorschlagsebene für Hinzufügen fehlender include-Anweisungen“ werden angezeigt. Der Inhalt des Dropdownmenüs wird angezeigt: **Nur Refactoring**, **Vorschlag**, **Warnung** und **Fehler**. Das Dropdownmenü **Vorschlagsebene für Entfernen nicht verwendeter include-Anweisungen** bietet die gleichen, aber auch abgeblendete Optionen.

Die Bedeutungen der Optionen der Vorschlagsebene sind:

Nur Refactoring: Die Include-Bereinigung bietet Aktionen, die Sie über das Menü „Schnelle Aktion“ ausführen können, wenn Sie mit dem Mauszeiger auf #include zeigen oder den Cursor auf der Zeile #include platzieren und STRG+PUNKT drücken:

A screenshot of the quick action to remove an unused header

Wenn Sie mit dem Mauszeiger auf „#include iostream“ zeigen, wird eine Glühbirne mit dem Text „#include iostream“ in dieser Datei nicht verwendet“ angezeigt.

Vorschlag, Warnung, Fehler: Die Include-Bereinigung bietet Aktionen, die über Vorschläge, Warnungen oder Fehler im Fenster „Fehlerliste“ ausgeführt werden können. Sie bestimmen, welche. Im folgenden Screenshot der Fehlerliste ist die Include-Bereinigung so konfiguriert, dass nicht verwendete Header mit einer Warnung angezeigt werden. Stellen Sie sicher, dass Build und IntelliSense im Dropdownfilter ausgewählt ist, damit Sie die Ausgabe der Include-Bereinigung sehen können:

A screenshot of the Error List window.

Der Dropdownfilter ist auf „Build und IntelliSense“ festgelegt. Eine Warnung wird angezeigt: „VCIC002 – #include < iostream-> wird in dieser Datei nicht verwendet.“

Abgeblendet

Die Include-Bereinigung zeigt nicht verwendete Header an, indem die Zeile der nicht verwendeten Headerdatei im Code-Editor abgeblendet wird. Zeigen Sie mit dem Cursor auf die abgeblendete #include-Anweisung, um das Menü „Schnelle Aktion“ anzuzeigen, und wählen Sie Potenzielle Fehlerbehebungen anzeigen aus, oder klicken Sie auf die Dropdownliste mit der Glühbirne, um Aktionen im Zusammenhang mit der nicht verwendeten Datei anzuzeigen.

A screenshot of a dimmed #include < iostream > line.

Die Zeile „#include < iostream >“ ist abgeblendet, da die Codezeile, die iostream verwendet, auskommentiert ist. Diese Codezeile lautet „// std::cout << "charSize = " << charSize;“. Das Menü „Schnelle Aktion“ wird ebenfalls für diese Zeile angezeigt. Es enthält den Hinweis, dass #include < iostream > in dieser Datei nicht verwendet wird, sowie den Link „Potenzielle Fehlerbehebungen anzeigen“.

Konfigurieren der Include-Bereinigung mit .editorconfig

Es gibt weitere Optionen zum Konfigurieren der Include-Bereinigung, z. B. das Ausschließen angegebener include-Anweisungen aus Bereinigungsvorschlägen, die angeben, dass einige Headerdateien erforderlich sind, sodass das Tool sie nicht als nicht verwendet markiert usw. Diese Optionen werden in einer Datei vom Typ .editorconfig definiert, die Sie Ihrem Projekt hinzufügen können, um u. a. konsistente Codierungsstile für jeden zu erzwingen, der an der Codebasis arbeitet. Weitere Informationen zum Hinzufügen einer .editorconfig-Datei zu Ihrem Projekt finden Sie unter Erstellen von portablen, benutzerdefinierten Editor-Einstellungen mit „EditorConfig“.

Sie können folgende .editorconfig-Einstellungen mit der Include-Bereinigung verwenden:

Einstellung Werte Beispiel
cpp_include_cleanup_add_missing_error_tag_type

Legt die Fehlerstufe für Meldungen zum Hinzufügen transitiver Include-Anweisungen fest.
none
suggestion
warning
error
cpp_include_cleanup_add_missing_error_tag_type = suggestion
cpp_include_cleanup_remove_unused_error_tag_type

Legt die Fehlerstufe für Meldungen zum Entfernen nicht verwendeter Include-Anweisungen fest.
none
suggestion
warning
error
dimmed
cpp_include_cleanup_remove_unused_error_tag_type = dimmed
cpp_include_cleanup_excluded_files

Schließt die angegebenen Dateien aus Meldungen der Include-Bereinigung aus. Sie erhalten überhaupt keine Information im Zusammenhang mit dem Header – weder den Vorschlag, ihn hinzuzufügen, noch die Information, dass er nicht verwendet wird.
filename cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h
cpp_include_cleanup_required_files

Gibt an, dass file1 für die Verwendung von file2 erforderlich ist. Geben Sie z. B. an, dass auch altbase.h enthalten sein muss, wenn Sie atlwin.h verwenden.
file1:file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_include_cleanup_replacement_files

Ersetzt file1 durch file2 während des Include-Bereinigungsvorgangs. Sie bevorzugen beispielsweise cstdio gegenüber stdio.h. Wenn Sie über eine Datei mit #include <cstudio> und #include <stdio.h> verfügen und nur Inhalt aus stdio.h nutzen, weist die Include-Bereinigung Sie bei dieser Einstellung darauf hin, stdio.h zu entfernen, da cstdio während der Verarbeitung durch stdio.h ersetzt wurde. Wenn Sie den Inhalt aus keiner Datei verwenden, werden Sie von der Include-Bereinigung aufgefordert, beide zu entfernen.
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

Generieren Sie keine Meldung für das indirekte Einschließen von file2, wenn file1 enthalten ist. Wenn Sie beispielsweise #include <windows.h> und nur etwas aus dem indirekt eingeschlossenen Header winerror.h verwenden, werden Sie von der Include-Bereinigung nicht aufgefordert, winerror.h hinzuzufügen. Dies ist nützlich, wenn Sie eine Fassadenheaderdatei anstelle der enthaltenen indirekten include-Anweisungen einschließen möchten.
file1:file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

Siehe auch

Übersicht über die C/C++-Include-Bereinigung
Meldungen der Include-Bereinigung