开发工具

CLion 2018.3 :远程开发、CPU 性能分析器、C++17、基于Clangd 的导航,以及改进的 VCS 和编辑器

今年,我们从两个方面重点加强了 CLion。首先是改进C++语言支持,并且改进了 IDE 的通用性能。因此,我们增加了基于 Clangd 的实验性补充语言引擎,做了大量工作,虽不能一眼看出工作成果,但其能够帮助解决几十个编辑器 UI 死机的问题。

第二方面针对永无止境的远程配置工作。从适用于 Windows 的 Linux 的子系统(WSL),以及到年底实现的完全支持远程开发。

基于这两方面的工作,我们完成了今年最后一次主要版本,即 CLion 2018.3,让我们详细地了解一下它带来的好处吧!

2018.3 将以下变化融为一体:

 

DOWNLOAD CLION 2018.3

 

远程开发

现在可以从 Windows、Linux 或 macOS 客户端机器连接到 Linux 远程主机上进行远程开发。

请注意,目前的配置有两个主要限制:

  • 它只适用于基于 CMake 的项目(CLion 还支持 Gradle 和汇编数据库项目模型,但尚未支持它们的远程开发)。

  • 安装程序假定源码位于本地机上,在该机器上 CLion 使用rsync(在 macOS 和Linux 上)或sftpgzip压缩(Windows)到远程机器,从而实现同步。作为回报,CLion 将标题搜索路径同步到本地机,从而加快代码解析,并且在写代码时编辑器响应更灵敏。

配置相当简单 – 只需在设置/偏好(Settings/Preferences) | 构建、执行、部署(Build, Execution, Deployment) | 工具链(Toolchains)中创建远程工具链,然后使用为项目配置的CMake配置文件(或将此远程工具链设置为默认,以便自动使用):

 

完成这项工作后,您可以直接在 CLion 中编译、运行和调试您的应用程序,或在远程机上进行测试。像平常一样调用命令并远程执行:

有关远程模式如何在幕后工作的更多详情,请参考我们的详细博文

 同时,如果您对我们接下来的工作重点感兴趣,请访问我们的跟踪器:

  • 打开远程 CMake 项目,假定远程存储源码(CPP-14584

  • 支持远程版本控制系统(CPP-14482

  • 支持远程终端(CPP-14588

  • 集成 Valgrind Memcheck(CPP-14178)、Google sanitizers(CPP-14179)和远程模式下的CPU性能分析器(CPP-14357

  • 和链接到远程开发上父级请求的其他请求(CPP-744

CPU 性能分析器

现在在 Linux(Perf)和 macOS(DTrace)上,CLion 与 CPU 性能分析器集成。在导航工具栏中有执行该任务的新操作,也在当您点击左边排水沟中的运行图标时显示的运行菜单中。性能分析器通常需要花一定时间来收集数据。

 完成后,显示通知气球,并且在分析器工具窗口可查看应用程序性能分析的信息(查看(View) | 工具窗口(Tool Windows) | CPU性能分析器(CPU Profiler))。

选项卡上列出火焰图、调用树和方法,提供按线程划分的信息。或者,您可以在一个位置查看合并的所有线程的信息。还可以跳到源码,以研究导致应用程序性能下降的代码:

您还希望在 CLion 中集成任何其他性能分析器吗?请告诉我们!

支持 C++

基于 Clangd 的引擎:现在用于在代码中导航。我们的一个主要目标是使Clion准确且了解现代C++的语言功能。为了更接近这个目标,我们今年发布了新的基于 Clangd 的补充语言引擎,它与 CLion 自己的语言引擎并行工作,并且有助于某些特定的编辑器功能。在目前的 2018.2 版中,基于 Clangd 实现了错误和警告注释。

在 CLion 2018.3 中,某些导航和搜索操作迁移到了基于 Clangd 的引擎,包括转到声明/定义(Go to declaration/definition)、在插入符号下高亮显示引用、快速文档弹出窗口查找用途(Find usages)。CLion 仍在审核和调整来自基于 Clangd 引擎的结果,因此,这两个引擎仍并行工作,为您提供最准确、最合理的结果。

如果要管理哪些 CLion 功能是基于 clangd 的,请转到设置/偏好(Settings/Preferences) | 语言和框架(Languages & Frameworks) | C/C++ | Clangd:

错误注释器、Clang-Tidy 和通过 Clangd 导航都是相互独立的,因此您可以配置最适合项目的设置。默认情况下,Clangd 适用于这三者;如果要完全禁用它,您必须关闭所有三个选项。

顺便说一下,Clang-Tidy(著名的C++ “linter”工具)基于 clang AST,无论是否有基于 Clangd 的引擎,都可以在 CLion 中使用。主要区别在于:通过 Clangd 启用时,它使用 Clangd 缓存的 AST,从而改善性能。

C++17:支持折叠表达式和演绎指南

尽管我们在基于 Clangd 的引擎上已经投入了大量精力来实现更多 IDE 功能,但我们仍然在不断改进 CLion 自己的语言引擎。随着 C++17 的应用范围越来越广泛,我们在 CLion 的解析器中增加了对 C++17 折叠表达式和 C++17 演绎指南的支持。因此,高亮显示代码变得更加准确,现在代码帮助更能理解您的代码。例如,在用户定义演绎指南的情况下,现在可以正确推断类型:

改进单元测试性能

在本次发布周期中,我们的工作重点是改进编辑器性能和消除 UI 死机。为了提高性能,CLion 现在使用延迟测试检测。在许多情况下,这减少了项目建立索引的时间,无论您使用的是哪种框架 – Google Test、Boost.Test 或 Catch(2)。我们从EAP用户那里获得了一些非常好的反馈,他们认为现在编辑器响应更快了。

因为CLion现在以延迟的方式检测单元测试,所以我们增加了一个用于诊断的特殊操作 – “显示测试列表(Show Test List)”,可以从查找操作(Find Action)对话框使用该命令。

它将打开一个文件,其中列出当前在项目中检测到的所有测试:

如果您尚未在项目中启动任何单元测试,或者尚未使用单元测试打开任何文件,那么可能会得到空列表,因为操作本身不会触发测试索引。但如果您已经执行了上述操作,那么您将得到合适的列表,并能够检查您实际上已经在项目中为哪些测试建立了索引。如果您有任何改进此功能的想法,请与我们分享!

IDE 新操作

构建/重新构建(Build/Rebuild)

CLion v2018.3引入新的构建(Build)菜单,其中收集了所有适用于特定项目模型的构建/重新构建/安装(build/rebuild/install)操作。对于编译数据库,它只重新编译(Recompile)单个文件。但对于CMake,则有更多操作:

Build_menu
例如:新操作“构建项目(Build Project)”从为当前项目配置的所有CMake配置文件构建CMake的所有目标。

使用“Build All in <selected CMake Profile>”从特定CMake配置文件构建所有目标。

也可以重新构建整个项目、选定的 CMake 配置文件(所有目标),或选定的配置。可以在我们的网络帮助找到可用操作的完整列表。

运行一切(Run Anything)和随处搜索(Search Everywhere)

这对通用对话框可提高您使用IDE的工作效率。双击Ctrl以调用Run Anything和启用任何首选配置 – 只需输入名称。如果您想调试该配置 – 按住Shift键,对话框将切换到调试一切(Debug Anything)模式。可以用它打开项目 – 输入“Open”并从列表选择想要的项目。

双击Shift即可打开 Search Everywhere 弹出窗口,该窗口现在一次包含了几个操作:转到类、文件或符号、查找操作,或一次搜索它们全部(Search Everywhere)。用Tab在不同操作间切换。仍然可以使用以前的特定操作的快捷方式,例如:Ctrl+N / ⌘O仍打开类选项卡。

 

编译数据库架构合规性检查

CLion 2018.3 附带一系列用于编译数据库 json 文件的检查,旨在检查编译数据库 JSON 架构的合规性。例如,它可以高亮显示属性值使用了不正确的类型或缺少属性的情况:

VCS 功能增强

IntelliJ 平台作为 CLion 的基础,最近对我们使用版本控制系统的方式进行了一些重要的功能增强。首先,终于支持了Git子模块!IDE 现在确保在克隆根储存库时,能够克隆所有子模块。更新也是如此,还有其他处理子模块的 VCS 操作。

另一个重大变化是新的GitHub合并请求工具窗口(VCS | Git | 查看合并请求(View Pull Requests))。它列出了存储库的所有合并请求。可以根据合并请求的状态(例如:state:open)、分配到任务的人员、作者等筛选视图。此外,只需单击右键即可为任何合并请求新建本地分支。在IntelliJ IDEA最新消息页面查看更多有关 VCS 功能增强的信息。

改进编辑器

多行待办事项

如果您想在待办事项的注释中存储更多详细信息,最好将其拆分为几行。

CLion 现在可以正确处理这种情况 – 只需在待办事项注释的第二行开头增加一个缩进:
Multiline_todo
IDE 将区别以缩进开头的行和普通注释,并将其高亮显示为待办事项注释。此外,整个注释文本将显示在待办事项工具窗口中(视图(View) | 工具窗口(Tool Windows) | 待办事项(TODO))。

快速文档中的宏扩展

快速文档弹出窗口(在 Windows/Linux 系统使用Ctrl+Q ,在 macOS 系统使用F1)提供了一种简单方法来理解通过预处理程序后将被替换的代码。被宏调用时,它显示最终的宏替换。

在 2018.3 版中,该弹出窗口现已格式正确,并且高亮显示关键字。这真的非常方便,例如在处理 boost 宏时:

辅助功能增强

在设置/偏好(Settings/Preferences) | 外观和行为(Appearance & Behavior) | 外观(Appearance)中新增一些设置,使CLion(和其他基于IntelliJ的IDE)能够满足更多人的需求。其中之一就是全新的高对比度主题。

新插件 UI

我们重新设计了设置/偏好(Settings/Preferences) | 插件(Plugins)页面。其新 UI 使管理、安装、卸载和更新插件更加容易。您可以看到最有价值的插件在特色插件(Featured plugins)下分组,或根据评分或下载次数为插件排序。

就是这样!立即下载 CLion 2018.3,试试这些新功能并且开始为期 30 天的免费评估。顺便说一下,您可以使用这个来自 GitHub 的演示项目来试试一些功能增强。

我们期待您的反馈!

Rust 和 Swift 更新

CLion 2018.3 通过 Swift 插件支持 Swift Package Manager。

只需在 CLion 中打开 SPM 项目并使用它,无需其他配置。

阅读更多并观看简短演示

Rust 插件已更新,以便获得部分 Rust 2018 支持,支持 Move 分析检查和 Cargo 单元测试。

立即下载 CLION 2018.3

您的 CLion 团队

JetBrains
The Drive to Develop

原文作者 Anastasia Kazakova,2018 年 11 月 27 日

image description

Discover more