次の方法で共有


Visual Studio での C++ インクルード診断

Visual Studio 17.8 以降、Visual Studio は C++ #include ファイルの分析に役立ちます。

  • 各ヘッダー ファイルの何かが使用される頻度と場所を表示します。
  • #include ファイルのビルド時間を表示します。これは、ビルド時間を最適化する機会を特定するのに役立ちます。

C++ インクルード診断と CodeLens を有効にする

C++ インクルード診断機能は、既定ではオフになっています。 有効にするには、コード エディターで右クリックしてコンテキスト メニューを表示し、[インクルード ディレクティブ>] #include [診断をオンにする] を選択します。

A screenshot of the context menu that appears when you right-click in the code editor area.

コンテキスト メニューでは、include ディレクティブ オプションが強調表示され、2 つのオプションが表示されます。Sort # include ディレクティブと turn # include 診断をオンにします。

ファイルに関する #include 情報は CodeLens を介して表示され、既定ではオフになっています。 関連する CodeLens 設定を有効にするには、[ツール>オプション>] テキスト エディター>のすべての言語>CodeLens移動し、[C++ #include 参照の表示] と [C++ のコンパイル時間の表示] の両方が有効になっていることを確認します。

A screenshot of the options window.

オプション ウィンドウは、CodeLens >すべての言語>テキスト エディターに設定されます。 [Show C++ # include references]\(C++ の表示\) の [参照] オプションと [Show C++ compilation times]\(C++ コンパイル時間の表示\) オプションが強調表示されています。

参照の表示#include

[診断を含める] を試すには、新しい C++ コンソール プロジェクトを作成します。 メイン .cpp ファイルの内容を次のコードに置き換えます。

#include <iostream>
#include <vector>

// a function that takes a vector of integers and prints them out
void print(std::vector<int> &vec)
{
    for (int i : vec)
    {
        std::cout << i << std::endl;
    }
    std::cout << std::endl;
}

// a function that takes a vector of integers and adds 10 to each element of the vector and store the result in a new vector
std::vector<int> add10(std::vector<int>& vec)
{
    std::vector<int> newVec;
    for (int i : vec)
    {
        newVec.push_back(i + 10);
    }
    return newVec;
}

int main()
{
    std::vector<int> vec = { 7, 5, 16, 8 };

    print(vec);
    auto newVec = add10(vec);
    print(newVec); 
}

C++ インクルード診断を有効にすると、ヘッダー ファイルの上に現在のコード ファイル内のヘッダー ファイルのコードが参照される回数が表示されます。 前のコード サンプルでは次のようになります。

6 references
#include <iostream>
5 references
#include <vector>

コード エディターで、上記#include <vector>の 5 つの参照を選択し、このファイルでコード<vector>が使用されている場所の概要が表示されます。

A screenshot of the C++ Include Diagnostics context window showing where code from the vector header file is used.

C++ インクルード診断コンテキスト ウィンドウは、コード内にベクター ヘッダー ファイルのコードが現在のコード ファイルで使用されている場所が 5 つあることを示しています。 たとえば、戻り値とパラメーターとして、add10 関数の定義で 2 回使用されます。 これは、newVec の宣言の 17 行目で使用されます。

コード内の場所に移動する項目を選択します。

ビルド時間の表示#include

各ファイルのビルド時間を確認するには、最初に#includeビルド インサイトを使用してビルドします。

ソリューション> ビルドで [ビルドの実行] インサイトを選択して、メイン メニュー バーの [ビルド>インサイトをオンにします。 ビルドが完了すると、コンパイルされるさまざまなファイルのビルド時間を一覧表示するウィンドウが表示されます。 ソース コード ウィンドウに戻り、各 #include ファイルのビルド時間が CodeLens に表示されます。 次のようになります。

6 references | Build: 0.3560s
#include <iostream>
5 references | Build 0.0360s
#include <vector>

使用頻度の低いディレクティブがあり、コンパイル時間に大きな影響を与えるディレクティブがある #include 場合は、このツールを使用してそれを識別できます。

この記事では、C++ Include Diagnostics と CodeLens を有効にする方法と、C++ インクルード診断を使用してインクルード ファイルの何かが使用される頻度とビルド時間への影響を分析する #include 方法について説明しました。

関連項目

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