[問題の詳細] ウィンドウ

[問題の詳細] ウィンドウには、MSVC コンパイラまたは C/C++ のコード分析によって発行される構造化された診断が表示されます。

[エラー一覧] ウィンドウ[詳細] 列にアイコンが表示されているエントリを選択して、[問題の詳細] ウィンドウを開きます。 [問題の詳細] ウィンドウには、選択したエントリの構造化された診断が表示されます。

Screenshot of the Visual Studio Error List with one entry that has an icon in its details column.

Visual Studio の [エラー一覧] のスクリーンショット。 1 行のテーブルが表示されています。 この行はコンパイラ エラーを表し、エラー コード C2665、"pet: オーバーロードされた関数ですべての引数の型を変換できませんでした" という説明、[詳細] という名前の列に角が拡大された四角形のアイコンが含まれています。 このアイコンは強調表示されています。

次の 2 つのシナリオで、これらの診断が生成されます。

  • MSBuild と MSVC コンパイラを使って C++ コンパイルを行うと、構造化された診断が出力される場合があります。
  • キー イベント データをサポートするコード分析の警告では、構造化された診断が出力されます。

次のいずれかの操作を行って、[問題の詳細] ウィンドウを開きます。

  • エントリが強調表示されている間に、エントリをダブルクリックするか、Enter キーを押します。 この動作を無効にするには、[ツール]>[オプション]>[テキスト エディター]>[C/C++]>[詳細設定]>[Show Problem Details on Double Click] (ダブルクリックで [問題の詳細] を表示) を設定します。
  • [詳細] 列のアイコンを選択します。
  • エントリのショートカット メニューを開き、[Open Problem Details] ([問題の詳細] を開く) オプションを選択します。

既定では、[問題の詳細] ウィンドウは [エラー一覧] ウィンドウと同じ場所に開きます。 [問題の詳細] ウィンドウが開く場所を変更するには、それを目的の位置に移動します。

[問題の詳細] ウィンドウには構造化された情報が表示され、それは入れ子になっている場合があります。 ウィンドウが開くと、入れ子になった子を持つすべてのエントリが折りたたまれます。

Screenshot of the Visual Studio Problem Details window with all children collapsed.

Visual Studio の [問題の詳細] ウィンドウのスクリーンショット。 以前の [エラー一覧] エントリと同じエラー コードと説明を示すヘッダーがあります。 cppcon-diag.cpp (23 行目) というテキストを含む選択可能なリンクもあります。 このヘッダーの下には、潜在的なオーバーロードが void pet(cat)、void pet(dog)、または void pet(_T0) であることを説明するエントリがあります。 最後のエントリには、"引数リスト (lizard) を一致させようとしているとき" と表示されています。 各行の右側には、各エントリのファイルと行番号を示す灰色のテキストがあります。 これらはすべて cppcon-diag.cpp に属しており、行番号はそれぞれ 7、6、18、23 です。 最初の 3 つのエントリの左側には右を指す小さな空の矢印があり、これらのエントリは展開できますが、現在は展開されていないことを示しています。

エントリを展開して子を表示するには、エントリの左側にある矢印を選択するか、エントリが強調表示された状態でキーを押します。

Screenshot of the Visual Studio Problem Details window with some children expanded.

Visual Studio の [問題の詳細] ウィンドウのスクリーンショット。 内容は前のスクリーンショットとほとんど同じですが、一部のエントリが展開され、それらの子エントリが表示されています。 最初のエントリは展開されています。 "void pet(cat) 引数 1 を lizard から cat へ変換できません" というテキストを含む入れ子になったエントリがあります。 このエントリはインデントされており、展開できます。 以前の 2 行目は拡張され、"void pet(dog) 引数 1 を lizard から dog へ変換できません" という展開されていないエントリが表示されています。 3 番目のエントリは展開され、"関連する制約が満たされていません" というエントリが表示されています。 このエントリには、展開された "概念 pettable lizard が false と評価されました" という子があります。 このエントリには 2 つの子があります。 1 つ目は展開されておらず、"概念 has_member_pet lizard が false と評価されました" と表示されています。 2 つ目は展開されており、"概念 has_default_pet lizard が false と評価されました" と表示されています。 この 2 つ目の子には 2 つの子があり、どちらも展開できません。 それらには "is_pettable は lizard のメンバーではありません" および "lizard の宣言を確認してください" と表示されています。

構造化された診断を有効または無効にするには、[プロジェクト]>[プロパティ]>[詳細設定]>[Enable MSVC Structured Output] (MSVC の構造化された出力を有効にする) オプションを使用します。 Directory.Build.props ファイルを作成し、その UseStructuredOutput プロパティを true または false に定義することで、複数のプロジェクトに影響を与えることができます。