次の方法で共有


Visual Studio の C++ Include 診断

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

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

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

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

コード エディター領域で右クリックしたときに表示されるコンテキスト メニューのスクリーンショット。

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

#include ファイルに関する情報は CodeLens を介して表示され、既定ではオフになっています。 関連する CodeLens 設定を有効にするには、 Tools>Options>Text Editor>All Languages>CodeLens に移動し、 Show C++ #include 参照Show C++ のコンパイル時間の両方が有効になっていることを確認します

オプション ウィンドウのスクリーンショット。

オプション ウィンドウは、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>コードが使用されている場所の概要が表示されます。

ベクター ヘッダー ファイルのコードが使用されている場所を示す C++ インクルード診断コンテキスト ウィンドウのスクリーンショット。

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

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

ビルド時間 #include 表示する

#includeした各ファイルのビルド時間を確認するには、まず Build Insights を使用してビルドします。

Build>Run Build Insights on Solution>Build を選択して、メイン メニュー バーから Build Insights を有効にします。 ビルドが完了すると、コンパイルされるさまざまなファイルのビルド時間を一覧表示するウィンドウが表示されます。 ソース コード ウィンドウに戻り、各 #include ファイルのビルド時間が CodeLens に表示されます。 次のようになります。

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

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

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

関連項目

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