次の方法で共有


Visual Studio で C/C++ のインクルード クリーンアップをを構成する

17.8 Preview 1 以降、Visual Studio では、C および C++ のコードの品質を向上させるために、次の方法で #include をクリーンアップできます。

  • 必要なヘッダー ファイルが別のヘッダー ファイルによって間接的にインクルードされるためにのみ、コンパイルされるコードにヘッダー ファイルを追加することを提案します。
  • 未使用のヘッダー ファイルを削除するオファー。ビルド時間が短縮します。

この記事では、Visual Studio でインクルード クリーンアップを構成する方法について説明します。 インクルード クリーンアップの詳細については、C/C++ インクルード クリーンアップの概要に関する記事を参照してください。

インクルード クリーンアップをオンにする

インクルード クリーンアップの機能は既定でオンになっています。 アクティブになっていない場合は、[ツール]>[オプション]>[テキスト エディター]>[C/C++]>[コード クリーンアップ] からオンにし、[#include クリーンアップを有効にする] を選択します。

次に、ドロップダウンを使用して、間接ヘッダーの追加や、未使用のヘッダーの削除が可能な場合の通知方法を構成します。

テキスト エディター > の C/C++ > コード クリーンアップで開いた [ツール オプション] ダイアログ。

[#include クリーンアップを有効にする] チェック ボックスがオンになっています。 [未使用のインクルード候補レベルの削除] と [不足しているインクルード候補レベルの追加] のドロップダウンが表示されています。 ドロップダウンの内容 (**リファクタリングのみ**、**候補**、**警告**、**エラー**) が表示されています。 **未使用のインクルード候補レベルの削除** ドロップダウンでも同じオプションが表示されますが、淡色表示されているものもあります。

候補レベルのオプションの意味は次のとおりです。

リファクタリングのみ: インクルード クリーンアップにより、マウス ポインターを #include の上に置くか、#include 行にカーソルを置いて Ctrl キーを押しながらピリオド キーを押したときに、クイック アクション メニューで実行できるアクションが提供されます。

使用されていないヘッダーを削除するクイック アクションのスクリーンショット

#include iostream の上にカーソルを置くと、このファイルで #include iostream が使用されていないテキストに電球が表示されます。

候補、警告、エラー: インクルード クリーンアップにより、[エラー一覧] ウィンドウで候補、警告、またはエラーのときに実行できるアクションが提供されます。 いずれかを決定します。 次のスクリーンショットの [エラー一覧] では、未使用のヘッダーに警告が表示されるようにインクルード クリーンアップが構成されています。 インクルード クリーンアップによる出力が表示されるように、ドロップダウン フィルターで [ビルド + Intellisense] が選択されていることを確認します。

[エラー一覧] ウィンドウのスクリーンショット。

ドロップダウン フィルターは [Build + IntelliSense] (ビルド + IntelliSense) に設定されています。 "VCIC002 - #include < iostream >はこのファイルでは使用されません" という警告が表示されています。

淡色表示

インクルード クリーンアップでは、コード エディターで未使用のヘッダー ファイルの行を淡色表示することで、未使用のヘッダーを示します。 淡色表示の#include の上にカーソルを置くと、クイック アクション メニューが表示されるので、[考えられる修正内容の表示] を選択するか、電球のドロップダウンをクリックします。これで、未使用のファイルに関連するアクションが表示されます。

淡色表示された #include < iostream > 行のスクリーンショット。

iostream を使用するコード行がコメント アウトされているため、#include < 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 の使用に file2 が必要であることを指定します。 たとえば、atlwin.h を使用する場合は、その altbase.h も含める必要があることを指定します。
file1:file2 cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h
cpp_include_cleanup_replacement_files

インクルード クリーンアップ処理中に file1file2 に置き換えます。 たとえば、stdio.h よりも cstdio を使いたい場合があるかもしれません。 #include <cstdio>#include <stdio.h> の両方を含むファイルがあり、この設定で stdio.h のコンテンツのみを使用する場合は、処理中に cstdio の使用が stdio.h に置き換えられたため、インクルード クリーンアップによって stdio.h を削除するように指示されます。 どちらのコンテンツも使用しない場合は、インクルード クリーンアップのときに両方を削除するように指示されます。
file1:file2 cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint
cpp_include_cleanup_alternate_files

file1 が含まれている場合は、間接インクルード file2 のメッセージを生成しないでください。 たとえば、#include <windows.h> を実行し、その間接的にインクルードされたヘッダー winerror.h にあるものしか使用していない場合、インクルード クリーンアップで winerror.h の追加を求めるダイアログを表示することはありません。 含まれる間接インクルードの代わりにファサード ヘッダー ファイルを含めたい場合に便利です。
file1:file2 cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h

関連項目

C/C++ インクルード クリーンアップの概要
インクルード クリーンアップのメッセージ