Visual Studio Code C/C++ 扩展2017年6月份的更新

[原文发表地址] Visual Studio Code C/C++ extension June 2017 Update

[原文发表时间] 2017/06/27

今天我们很激动地宣布发布2017年六月份更新的版本Visual Studio Code C/C++ 扩展。这次更新可以自动完成语义感知成员列表并提高了整体默认智能感应的行为,提供了更流畅的开箱即用智能感应体验。

如果你之前还没有试用过VS Code,你可以先下载VS Code(Stable build)或者是 VS Code Insiders。然后再下载Visual Studio Code C/C++ 扩展并尝试使用。如果你已经安装了此扩展程序,VS Code将通知你更新并自动安装。

提供此扩展概述的原始博客文章Visual Studio Code C/C++ 扩展已经通过这些更改进行了更新。

改善智能感应体验

在上个月的更新中,我们增强了原始标签解析器智能感应引擎的操作,这个引擎通常对使用新的更强大的语义引擎编辑功能提供“模糊”查询结果。这种新的引擎提供了更高效的语言服务功能的能力。与5月更新一样,这种新的引擎仅仅被默认使用在VS Code Insiders中。然而,我们鼓励大家尝试在你的settings.json文件中将” C_Cpp.intelliSenseEngine”的值由”Tag Parser”改为”Default”。

在更新你的includePath来查找所有头文件之后,新的智能感应引擎将会为类/结构体/命名空间成员,快速信息工具提示和错误曲线提供更加准确的自动填充建议。新的智能引擎尽可能地被用作默认值。在引擎返回错误的情况下,扩展将会动态地返回到标签解析器来作用打开的文件。查看下面的”回退如何工作以及如何控制行为”来获得更多的信息。

成员列表自动填充

与标签解析器不同,新的语义引擎可以确定类型,因此在当你输入”.”,”->”或者是”::” 时提供更加简洁准确的完成项列表。

请注意,在输入“::”时,或者在没有提供范围字符时提供快速建议时,在全局范围内不启用此功能。标签解析器继续为这两种情况提供建议。

IntelliSenseMode设置

在5月份的更新中,语义引擎限制在Windows上的”MSVC mode”下编译代码以及在Linux和Mac上的”Clang/GCC mode”下编译代码。在这次的更新中,我们添加了一个设置,可以让你选择使用哪种模式来编译代码而不管你正在运行的平台。

例如,如果你正在windows平台上使用MinGW,你现在可以指示智能感应引擎使用“Clang/GCC mode”而不是“MSVC mode”。可以通过修改c_cpp_properties.json文件中活动配置中的“intelliSenseMode”属性来配置该模式。

如何返回之前的智能引擎工作及如何控制行为

此次的扩展程序首次尝试使用新的智能感应引擎来解析所有打开的文件。如果它发现自己找不到头文件或是依赖关系,它将会返回到标签解析器并提供原始的模糊智能感应行为。这个返回会影响完整的翻译单元而不仅仅是单个打开的文件。其他打开的TUs将继续使用新的智能感应引擎,在这个引擎中所有的#include依赖关系都可以被解决。这个设计有效地解决了“sea of red squiggles”,许多用户在5月份的更新中看到只显示无法解决的很多#include语句中的绿色波浪线。在下面的问题面板中提供了有关未解决的头文件和依赖关系的详细信息。

为了支持上述新的回退体验,使用户更容易发现和解决includePath问题,该扩展在#include语句旁边提供了Code Actions操作,该语句提供了添加新路径或禁用后备机制的快捷方式。将鼠标放在有下划波浪线的文本上并点击左边的小灯泡将会显示这些快捷选项。

我们认识到解决所有#include可能并不是所有项目必需的,你可能仍然希望体验使用新的警告引擎的生产力优势而无需自定义默认的包含路径。为此,“Force semantic IntelliSense”选项可以被选择,当被调用时,所有未解析的#include下面的波浪线将会变红并警告成员列表,语义分析也将会被启用而不管#include语句是否可以被解决。

告诉我们你的想法

下载 Visual Studio Code C/C++ 扩展,试用这个扩展并告诉我们你的用后体验。在GitHub上填写你的问题或是建议。如果你还没有给我们发送过用后反馈,请填写这个快速问卷来帮助我们塑造更满足你需求的扩展。