“问题详细信息”窗口

“问题详细信息”窗口显示 MSVC 编译器或 C/C++ 代码分析发出的结构化诊断。

“错误列表”窗口中选择“详细信息”列中显示图标的条目,打开“问题详细信息”窗口。 “问题详细信息”窗口显示所选条目的结构化诊断

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

Visual Studio“错误列表”的屏幕截图。 它显示含有单行的表。 该行表示编译器错误,并包含错误代码 C2665、描述“宠物: 没有重载函数可以转换所有参数类型”,以及角在“详细信息”列中放大的正方形图标。 此图标为突出显示状态。

两种方案生成以下诊断:

  • 使用 MSBuild 和 MSVC 编译器的 C++ 编译可能会发出结构化诊断。
  • 支持关键事件数据的代码分析警告发出结构化诊断。

执行以下操作之一,打开“问题详细信息”窗口

  • 条目突出显示时,双击该条目或按 Enter。 使用“工具”>“选项”>“文本编辑器”>“C/C++”>“高级”>“双击时显示问题详细信息”禁用此行为
  • 选择“详细信息”列中的图标
  • 打开条目的快捷菜单,然后选择“打开问题详细信息”选项

默认情况下,“问题详细信息”窗口与“错误列表”窗口在同一位置打开。 将“问题详细信息”窗口移动到所需位置,可更改其打开位置

“问题详细信息”窗口显示可能嵌套的结构化信息。 当窗口打开时,具有嵌套子项的所有条目开始时都处于折叠状态。

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

Visual Studio“问题详细信息”窗口的屏幕截图。 有一个标头显示与之前的“错误列表”条目相同的错误代码和说明。 还有一个可供选择的链接,其中包含文本 cppcon-diag.cpp (Line 23)。 在此标头下方有一些条目,说明潜在的重载是 void pet(cat)、void pet(dog) 或 void pet(_T0)。 最终条目指出“尝试匹配参数列表 (lizard) 时”。 每行右侧为灰色文本,显示每个条目的文件和行号。 它们都属于 cppcon-diag.cpp,行号分别是 7、6、18 和 23。 前三个条目的左侧是指向右侧的小空心箭头,表示这些条目可以展开,但目前未展开。

展开条目可查看其子项,方法是选择条目左侧的箭头,或者在条目突出显示的情况下按“向右键”

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

Visual Studio“问题详细信息”窗口的屏幕截图。 内容与上一屏幕截图大致相同,但部分条目已展开,因此其子条目可见。 第一个条目已展开。 有一个嵌套条目,其中包含文本“void pet(cat) 不能将参数 1 从 lizard 转换为 cat”。 此条目处于缩进状态,可以展开。 之前的第二行已展开,其中显示一个未展开的条目“void pet(dog) 不能将参数 1 从 lizard 转换为 dog”。 第三个条目已展开,其中显示一个条目“未满足关联的约束”。 此条目有一个展开的子项,内容为“概念 pettable lizard 的评估结果为 false”。 此条目有两个子项。 第一个子项未展开,内容为“概念 has_member_pet lizard 的评估结果为 false”。 第二个子项已扩展,内容为“概念 has_default_pet lizard 的评估结果为 false”。 第二个子项有两个子项,这两个子项都不可展开。 其内容为“is_pettable 不是 lizard 的成员”和“参见 lizard 声明”。

使用“项目”>“属性”>“高级”>“启用 MSVC 结构化输出”选项,启用或禁用结构化诊断。 可以通过使用定义为 true 或 false 的 UseStructuredOutput 属性创建 Directory.Build.props 文件,从而影响多个项目