“ 问题详细信息 ”窗口显示 MSVC 编译器或 C/C++的代码分析颁发的结构化诊断。
在 “错误列表 ”窗口中 选择显示“ 详细信息 ”列中的图标以打开 “问题详细信息 ”窗口的条目。 “ 问题详细信息 ”窗口显示所选条目的结构化诊断。
Visual Studio 错误列表的屏幕截图。 它显示包含一行的表。 该行表示编译器错误,并包含错误代码 C2665、说明“pet: no overloaded function could convert all the argument types”,以及一个在名为 Details 的列中放大角的正方形图标。 此图标突出显示。
两种方案生成以下诊断:
- 使用 MSBuild 和 MSVC 编译器C++编译可能会发出结构化诊断。
- 支持 关键事件 数据的代码分析警告发出结构化诊断。
通过执行下列作之一打开 “问题详细信息 ”窗口:
- 突出显示条目时,双击或按 Enter。 使用 工具>选项>文本编辑器>C/C++>“双击>”显示问题详细信息“禁用此行为。
- 选择“ 详细信息 ”列中的图标。
- 打开条目的快捷菜单,然后选择 “打开问题详细信息 ”选项。
默认情况下,“ 问题详细信息 ”窗口在“ 错误列表 ”窗口所在的同一位置打开。 更改“ 问题详细信息 ”窗口打开的位置,方法是将其移动到所需位置。
“ 问题详细信息 ”窗口显示可能嵌套的结构化信息。 当窗口打开时,包含嵌套子级的所有条目都开始折叠。
Visual Studio 问题详细信息窗口的屏幕截图。 有一个标头显示与之前的错误列表条目相同的错误代码和说明。 还有一个可选择的链接,其中包含文本cppcon-diag.cpp(第 23 行)。 在此标头下方有一些条目说明潜在的重载是空宠物(猫)、空宠物(狗)或空宠物(_T0)。 最终条目指出“尝试匹配参数列表(蜥蜴)时”。 每行右侧是灰色文本,显示每个条目的文件和行号。 它们都属于cppcon-diag.cpp,行号分别为 7、6、18 和 23。 前三个条目的左侧是指向右的小空心箭头,表示这些条目可以展开,但当前不是。
展开条目以查看其子项,方法是选择条目左侧的箭头,或按 Right 并突出显示该条目。
Visual Studio 问题详细信息窗口的屏幕截图。 内容与上一屏幕截图大致相同,但部分条目已展开,因此其子条目可见。 第一个条目已展开。 有一个嵌套条目,文本“void pet(cat)不能将参数 1 从蜥蜴转换为猫。 此条目缩进,可以展开。 从前面展开的第二行,揭示了一个未扩展的条目,阅读“空宠物(狗)不能将参数1从蜥蜴转换为狗。 第三个条目已展开,其中显示了一个条目,其内容为“未满足关联的约束”。 这个条目有一个扩展的孩子阅读“概念宠物蜥蜴评估为 false”。 此条目有两个子项。 第一个是未经扩展的,并写道“has_member_pet蜥蜴评估为 false 的概念。 第二个是扩展的,并阅读“has_default_pet蜥蜴评估为 false的概念。 第二个孩子有两个子级,其中两个都不可扩展。 他们读到“is_pettable不是蜥蜴的成员”和“看到蜥蜴的声明”。
使用 “项目>属性>高级>启用 MSVC 结构化输出 ”选项启用或禁用结构化诊断。 通过使用定义为 true 或 false 的 UseStructuredOutput 属性创建 Directory.Build.props 文件,可以影响多个项目。