CLion发布v2021.3最新版!提供新的远程开发

1,660 阅读11分钟

CLion是一款专为开发C及C++所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C++,同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CMake编译系统,从而提高开发人员的工作效率。

点击下载CLion v2021.3最新版

近日,CLion发布v2021.3最新版!提供新的远程开发、调试器中更好的数据视图、Docker 工具链、自定义编译器、类型提示等下面请看详情:

新的远程开发功能的 Beta 版
到目前为止,CLion 中的远程开发主要是在远程主机上运行项目构建,使用远程主机编译器和 CMake/make,使用远程主机调试器进行调试,以及在远程目标上运行应用程序。在此设置中,CLion 本身在本地运行,您的源文件也存储在本地客户端上,并自动同步到远程主机。
但是,这种方法有几个缺点:

  • 并非总是可以(出于安全原因或其他原因)将源代码存储在本地机器上,在这种情况下,代码只能在远程机器上定位和使用。
  • CLion 操作(例如索引)可能非常繁重,因此如果本地计算机是瘦客户端,则会出现严重的性能问题。
现在有令人兴奋的消息要分享——CLion 现在为新的远程开发工作流程提供了期待已久的支持!
主要思想是使用功能强大的远程机器来执行所有 IDE 操作并构建、运行和调试代码——同时在瘦本地客户端上运行 IDE。远程主机是托管源代码并运行无头 CLion 以执行大部分 IDE 功能的物理或虚拟机。开发人员使用本地瘦客户端(即物理机,如笔记本电脑)连接到服务器,并使用此瘦客户端进行开发。我们希望此设置可以帮助您保持更高的工作效率和灵活性,同时让您可以随时随地安全地工作。
在以下部分中,将解释JetBrains Gateway以及 CLion 中新的远程开发工作流的一些已知限制。
JetBrains 网关
JetBrains Gateway是我们的新应用程序,可作为所有远程后端的入口点。它在客户端上运行,可以被认为是一个轻量级的启动器。它将远程服务器连接到您的本地计算机,在后端下载必要的组件,并在 JetBrains 客户端中打开您的项目。它不需要您在本地计算机上安装 IDE。您可以从 Toolbox 应用程序或 JetBrains 网站获取最新版本的 JetBrains Gateway。
CLion发布v2021.3最新版!提供新的远程开发
使用 JetBrains Gateway 作为独立启动器或作为来自 CLion 的入口点以连接到远程服务器。
请务必注意,截至目前,您无法从 CLion 启动远程开发会话,但您可以通过 JetBrains Gateway 执行此操作。
已知限制
这个新的远程开发工作流程中的远程主机目前仍然只支持 Linux。确保您在 Linux 平台上拥有兼容的 SSH 服务器。Linux 平台应该有任何最新的 Linux 发行版,例如 Ubuntu 16.04+、RHEL/Centos 7+ 等。
在 CLion 中新的远程开发工作流中,代码编辑、代码分析、导航、运行/构建/调试代码和单元测试通常可以工作。这里有一些 CLion 特定的事情需要注意:
  • 仅支持 CMake 项目;Makefile 和 Compilation 数据库项目即将推出。
  • 使用 root 权限处理提升和运行/调试不起作用 ( CWM-4091 )。
  • CLion 特定的调试器功能(内存视图、Disasm)未显示在客户端计算机上 ( CWM-507 )。
  • 支持 C/C++、Objective-C/C++、Python、JavaScript 和 HTML 语言。Swift 和 Rust 在此模式下尚不可用。
  • 代码覆盖率未显示在客户端计算机 ( CWM-921 ) 上。
  • Sanitizers 和 Valgrind Memcheck 可用,而 Profiler 尚未在新的远程模式 ( CWM-4284 ) 下启动。
请注意,这是新远程开发功能的测试版,我们仍在积极努力改进它。
调试器
调试器中更好的数据视图
在调试时,您确实希望专注于重要的事情。在此版本中,我们自定义了调试器呈现数据的方式。在新的设置是在上下文菜单中的调试器工具窗口或设置/首选项| 构建、执行、部署 | 调试器 | 数据视图 | C/C++(或仅Data Views,如果在 CLion 中禁用了所有其他语言调试器)。您现在可以删除您不感兴趣的信息。
在变量视图中:
  • 用更具可读性的别名替换标准库类型。
  • 删除全局和函数范围说明符以及stdABI 版本。
  • 完全隐藏变量类型。
在框架视图中,除了上面提到的设置:
  • 隐藏函数参数和模板参数。
  • 显示模块名称,可帮助您随时猜测代码在哪个二进制文件中运行,并在线程启动时显示操作系统给出的线程 ID。
在相同的设置中,您还可以启用/禁用数字变量的更新十六进制视图。
CLion发布v2021.3最新版!提供新的远程开发
为了获得一种类型对象的连续内存存储的更具可读性的表示,新的View as Array...操作可用于任何指针变量。此操作添加一个观察点,将指针值呈现为数组。只需对指针变量调用相应的操作并指定数组的大小:
CLion发布v2021.3最新版!提供新的远程开发
嵌入式开发的调试器更新

调试器中的 RTOS 线程视图已扩展到 Zephyr OS。您可以在Settings/Preferences | 中启用集成。构建、执行、部署 | 嵌入式开发 | 实时操作系统集成。之前添加到 CLion 的 FreeRTOS 线程视图通过添加对象和堆视图进行了扩展。

CLion发布v2021.3最新版!提供新的远程开发


Docker 和其他工具链更新
在 CLion 中,工具链是一组构建和运行应用程序所需的所有必要工具。考虑到 C++ 生态系统中可能的工具的多样性,找到一种以最简洁的方式配置它们的方法很重要。CLion v2021.3 使工具链更灵活,更易于配置和自定义。
我们已经引入了Docker工具链,并建议您使用它而不是为您的 Docker 容器配置远程工具链。它避免了冗余的源代码同步,因为项目文件夹只是安装到容器中。在Settings/Preferences |创建工具链 构建、执行、部署 | Toolchains,选择你需要的Docker镜像,等待工具检测完成,保存设置。现在您已准备好使用 Docker 工具链进行项目开发。
以下更改对嵌入式开发特别有用,它允许您使用各种编译器和特定设置来配置工具链:

  • 在自定义编译器选项,则可以使用不是由本地的克利翁在克利翁支持的编译器。CLion 开箱即用,可以检测并使用 GCC、Clang、Clang-cl、MSVC 和 IAR 编译器。对于其他编译器,您现在可以提供包含自定义编译器定义的*.yaml文件。从我们的网络帮助中了解更多信息,并查看GitHub 上的示例配置,了解 CLion 团队准备的几个最流行的案例。
CLion发布v2021.3最新版!提供新的远程开发
  • 您现在可以通过CLion 中的脚本初始化编译器运行的环境。此类脚本通常设置编译器环境变量、自定义PATH变量等。脚本的新选项已添加到工具链配置中。
CLion v2021.3 中引入了一些特定于Windows 的增强功能:
  • 该系统的工具链可以是ARM或Windows上其他嵌入式配置非常有用。它允许您配置make可执行文件、编译器和调试器,而无需选择预定义的工具集和环境,类似于 Linux 和 macOS。
  • 对于那些在没有配置任何编译器的 Windows 机器上开始使用 CLion 的人,MinGW 现在捆绑在 CLion 中。捆绑的确切版本是MinGW-w64 9.0,带有languages=c,c++、posix 线程和seh异常。
该CMake的项目模型已经收到了一些更新:
  • 我们已将其更新为 v3.21.1,这意味着 CLion 现在也支持 CMake Presets v3。
  • 对于 3.20 及更高版本,CLion 现在在查询项目信息时使用 CMake File API 作为其默认方法。如果您更喜欢传统方法,其中涉及 CLion 解析使用 Makefiles 生成器运行的 CMake 命令的输出,您仍然可以在设置中启用它。
  • Ninja 已成为本地工具链(即不包括 Remote、Docker、WSL)和 CMake v3.20 及更高版本的 CLion 中新创建和新打开的项目的默认生成器。随着这一变化,Ninja v1.10.2 被捆绑在 CLion 中。Ninja 似乎是目前最有效的 CMake 生成器之一,因此我们鼓励您在您的项目中使用它。仍然存在一些问题,例如非彩色输出 ( CPP-17786 ),我们计划在即将推出的版本中解决这些问题。
  • 用于设置 CMake 生成器的新 UI 已添加到 CMake 配置文件设置页面Settings/Preferences | 构建、执行、部署 | 制作。用户可以使用所选工具链的默认值或设置预定义列表中的任何生成器:
CLion发布v2021.3最新版!提供新的远程开发
在编辑器中键入提示
在某些情况下,在代码中的特定位置使用哪种类型可能并不明显,例如用于auto变量、结构化绑定和 lambda 返回类型。为了提高代码可读性,CLion 2021.3 添加了推导类型的类型提示。
CLion发布v2021.3最新版!提供新的远程开发
鉴于现代 C++ 代码可以完全避免提及类型,这可能是一个真正的帮助:
CLion发布v2021.3最新版!提供新的远程开发
结合之前版本中添加的参数提示,这些提示使得在 C++ 中阅读和维护代码变得更加容易:
CLion发布v2021.3最新版!提供新的远程开发
更强大更准确的代码分析
CLion 2021.3 包括数据流分析的修复列表。分析现在是呼叫上下文敏感的。这意味着它以不同的方式处理不同的函数调用,而不会混合从它们中获取的数据进行分析。CLion 的生命周期分析是通过 DFA 实现的,基于 Herb Sutter 的生命周期安全提议,得到了增强,现在可以识别悬空迭代器和修改后的所有者。
CLion发布v2021.3最新版!提供新的远程开发
此更新还带来了新的 MISRA 检查(支持检查的最新列表)并将包括 Clang-Tidy 在内的 LLVM 工具更新到 v14.0.0。
插件更新
Space IDE 插件更新
您是否知道可以将 CLion 连接到Space以访问您的存储库、代码审查、自动化(CI 构建)和包?您可以在 CLion 中手动安装Space 插件。
合并请求和代码审查是许多开发团队工作流程的核心。能够在同一个地方处理代码并要求评论不是很好吗?更新后的 Space 插件现在可让您在 CLion 中完成所有这些工作!
  • 从 IDE 创建合并请求并分配团队成员进行代码审查。
  • 将文件标记为已查看/未查看以跟踪您在代码审查中的位置。
  • 在代码审查聊天中添加反应以更轻松地与您的团队沟通。
Rust 插件更新
IntelliJ Rust为声明性宏 2.0 提供了改进的支持。程序宏支持是目前的一项实验性功能,也已收到更新。
该插件现在获取完整的 stdlib 信息,包括依赖项和 Cargo 功能。
新的名称解析引擎现在为自动导入快速修复和完成当前范围之外的项目提供数据。这使得自动导入可用于宏并改进复杂再导出的处理——同时提高性能。
默认情况下启用 ML 辅助完成。由于crates.io元数据的本地索引,Cargo.toml 中的Crate 和版本完成得到了显着改进。该插件还添加了一个快速修复来限定完整路径和新的重构以提取结构字段。
在运行和调试方面,代码覆盖率现在适用于稳定的工具链,默认情况下启用 WSL 支持,并且调试器能够在“恐慌!”时自动中断。
其他变化
快速浏览一下其中的一些变化:
  • 一个新的构建目录选项被添加到设置/首选项 | 构建、执行、部署 | Makefile用于配置make在 CLion 中加载 Makefile 项目时执行所有任务的目录。
  • CLion 中的 Gradle 和 Gradle Native 插件现已分拆,可以从我们的市场安装。
  • “结构”工具窗口和“结构”弹出窗口中添加了一个新的切换开关,以显示成员函数的限定名称并帮助您更轻松地区分具有相同名称的函数。
  • 新的Push All up to Here操作允许您将提交推送到您在Git工具窗口的日志选项卡中选择的提交。
  • 为了提高 WSL 上项目的 CLion 性能,在这种情况下,基于Clangd的语言引擎现在直接在 WSL 上运行。