CLion 最新变化

CLion 2020.3 对开发流程的关键部分进行了令人期待的重大改进,包括代码分析、运行和调试应用程序以及单元测试。 对于嵌入式项目,CLion 现在开始支持 MISRA C 和 C++。 Qt 用户可以从专门为使用 Qt 代码而优化的 IDE 功能中受益。

调试器

以 Root 权限调试

CLion 2020.3 可以使用 root 权限运行和调试您的应用程序 - 只需要在相应的运行/调试配置中选择此选项。 这适用于 CMake、Makefile、Gradle Native、自定义构建和 CTest 应用程序。

使用核心转储调试

使用核心转储调试

适用于 Linux 和 macOS 的新 Run | Open Core Dump… 操作允许您在 CLion 中打开崩溃进程的现有核心转储,并在其中进行调试。 用户可以从调试器控制台检查框架和变量视图,检查内存和反汇编视图,评估表达式以及运行调试器命令。 详细了解此功能的配置过程和已知限制。

设置执行点

设置执行点

通过新的 Set Execution Point to Cursor 操作,您可以在调试时在程序的执行中来回移动,中断循环或重启它们,以及在 if-else 子句或 switch-case 语句中选择另一个分支,甚至完全跳过循环。 很简单,只需将间距中的箭头拖放到感兴趣的行上。

了解详情

交互式提示和内联监视

交互式提示和内联监视

现在,当应用程序在调试模式下运行时,编辑器将显示可点击的内联提示,您可以展开这些提示以查看属于给定变量的所有字段。 此外,您还可以在下拉列表中更改变量值,或者将任意表达式作为内联监视添加到代码中的该位置。

运行设置

使用脚本配置环境

使用脚本配置环境

在 CLion 中,您现在可以使用脚本指定启动运行/调试配置的环境。 您将在所有应用程序和单元测试配置中找到此功能的新设置。

编制索引时编辑配置

编制索引时编辑配置

不必再等待了! 可以在为项目编制索引的同时编辑运行/调试配置。

单元测试

CTest 支持

CTest 支持

CLion 现在支持 CMake 特定的测试运行程序 CTest。 这意味着将检测到使用 CTest 运行的测试列表,并且 IDE 会自动为它们创建运行/调试配置。 启动测试时,结果将呈现在内置测试运行程序中,您可以在其中调试测试,仅重新运行失败的测试等。

了解详情

适用于 Google Test 的测试运行程序

适用于 Google Test 的测试运行程序

版本 2020.3 增强了 CLion 对世界上最热门的 C++ 单元测试框架 Google Test 的支持(2020 年开发者生态系统调查显示有 31% 的 C++ 开发者使用 Google Test)。


    更新包括:
  • 完整的测试树将立即显示在内置测试运行程序中,然后执行测试。
  • 对于参数化测试,CLion 现在可以直接在测试树中显示测试参数。
  • 现在,禁用的测试(名称中带有 DISABLED 前缀的测试)也将显示在测试树中并具有相应的图标。

代码分析和重构

MISRA

MISRA C 和 C++

CLion 2020.3 为 MISRA C 2012MISRA C++ 2008(在嵌入式开发中,尤其是在汽车行业中广泛使用的准则)提供了部分支持。 这种支持可在开发周期的早期揭示不兼容之处,从而加快此类项目的开发速度。 CLion 的 Confluence 页面上提供了当前支持的检查列表。

未使用值

未使用值

CLion 2020.3 改进了 Unused Value 检查,此检查可捕获变量值在分配后从未使用的情况。 现在,也可以将其调整为遵循建议使用默认变量初始值设定项的样式。 用于在此类情况下关闭检查的新选项已添加到设置中。

Extract Lambda Parameter

Extract Lambda Parameter

新的 Extract Lambda Parameter 重构已添加到 CLion 中。 它使用作为相应参数传递的 lambda 表达式将表达式或语句提取到新参数中。 例如,语句可以是传递给排序函数的比较器。

观看正在运行的 Extract 重构

代码补全

Clang 补全代码段

Clang 补全代码段

Clang 补全代码段帮助您在输入 C++ 关键字时插入通用结构。 例如,在某些情况下,当补全 typedef 关键字时,代码补全不仅可以建议关键字本身,还可以建议类型和新名称的存根。

模板的补全

模板的补全

CLion 2020.3 改进了代码补全,因为它现在可以更准确地处理模板类型。 例如,在函数模板中显示容器元素和迭代器的补全选项。

Qt 项目

新建 Qt 项目

新建 Qt 项目

New Project 对话框将建议 Qt Console Executable 和 Qt Widgets Executable 项目类型。 您还可以选择 Qt CMake 前缀路径、项目中要使用的 C++ 语言标准以及 Qt 版本。 使用相应的模板生成新项目。

新建 Qt UI 类

新建 Qt UI 类

New 菜单 (Alt+Insert) 中的新 QT UI 类条目可帮助您同时创建 Qt 类和 .ui 文件 。 填写类名称并选择父类(QWidgetQMainWindowQDialog)。 生成 .h/.cpp/.ui 文件时将使用文件名库作为其文件名。 生成的文件遵循 Settings/Preferences | Editor | File and Code Templates 中列出的模板 - Qt ClassQt Class HeaderQt Designer Form

补全信号和槽

补全信号和槽

信号和槽是 Qt 的核心功能,因为它们是用于对象之间通信的实体。 现在,CLion 知道何时必须补全信号或槽,并且只会筛选补全下拉列表中的相应成员。

以 Qt 样式自动导入

以 Qt 样式自动导入

在 CLion 2020.3 中,Qt 项目中的自动导入建议已调整为遵循 Qt 的最常用样式。

Makefile 项目

支持使用 libtool、dolt 和 ccache 的项目

支持使用 libtool、dolt 和 ccache 的项目

使用各种包装器(如 ccachelibtooldoltslibtooljlibtool)的 Makefile 项目现在可以成功加载到 CLion 中。 详细了解仍然存在的部分限制。

运行/调试配置

运行/调试配置

现在,在 CLion 中设置 Makefile 项目变得更加轻松 - 加载项目时,将自动为顶级 Makefile 中的目标创建运行/调试配置。 现在,要运行和调试,您只需将配置指向已构建的可执行文件。

了解详情

重新编译单个文件

重新编译单个文件

Recompile 操作 (Ctrl+Shift+F9) 通过编译单个文件而不构建整个项目来帮助加快开发过程。 现在,它也适用于 Makefile 项目!

CMake

启用/禁用 CMake 配置文件

启用/禁用 CMake 配置文件

在 CLion 2020.3 中,现在可以在 CLion 中保留多个 CMake 配置文件,同时禁用当前不使用的配置文件。 这样有助于缩短项目的加载时间,并且可以免受暂时不可用(如当前已关闭的远程配置)的配置文件中冗余故障的影响。 可从 CMake 工具窗口和 CMake Profiles 设置对话框中使用此选项。

了解详情

VCS

Search Everywhere 中增加 Git 选项卡

Search Everywhere 中增加 Git 选项卡

Search Everywhere 对话框现在包括 Git 选项卡。 它有助于查找提交哈希和消息、标记以及分支。 您还可以在搜索字段中执行简单的数学计算。

UI 更新

现在,将根据正在使用的版本控制系统来命名 VCS 菜单。 我们移除了除对项目进行版本控制最有用的操作以外的所有其他操作,使菜单变得更加简洁。

此外,Commit 屏幕上现在明确显示了两个最热门的按钮 CommitCommit and Push…

Git 暂存支持

现在,您可以直接从 CLion 暂存变更。 要启用此功能,请转到 Preferences/Settings | Version Control | Git,然后勾选 Enable staging area 复选框。 点击 + 图标,将文件添加到 Commit 视图的全新 Staged 节点中。 您还可以直接从间距或在 Diff 视图中暂存变更。 要了解详情,请阅读我们的博文

远程开发

自动更新排除路径

自动更新排除路径

现在,在初始配置远程工具链时,会将本地标记为 Excluded 的目录自动标记为这些工具链的 Excluded paths。 并且,对已同步的项目进行更改时,CLion 将显示更新通知,并建议更新 Excluded paths 的列表。

了解详细信息

Code With Me

Code With Me

CLion 2020.3 支持 Code With Me (EAP),这是 JetBrains 为协作开发和结对编程提供的一项新服务。 利用 Code With Me,您可以与其他人共享 IDE 中当前打开的项目,并实时协同处理。 您可以立即访问插件市场 (Preferences / Settings | Plugins | Marketplace) 下载。 查看这些文章以详细了解 Code With Me。

UI 更新

欢迎屏幕的更新

欢迎屏幕的更新

CLion 2020.3 提供了改进的欢迎屏幕。 新的布局使最常用的操作触手可及,可让您立即访问最近的项目、自定义选项和插件设置。

拖放选项卡

拆分编辑器

现在,可以通过将选项卡拖放到主编辑器窗口的一侧来拆分编辑器。 Open in Right Split 操作可在文件处于打开状态时垂直拆分编辑器。

您可以从 Project 视图或其他导航弹出窗口(例如 Recent FilesSearch Everywhere)调用此操作 (Shift+Enter)。

IDE 主题已与操作系统设置同步

IDE 主题已与操作系统设置同步

CLion 现在可与您的操作系统主题同步。 要启用此功能,请转到 Settings / Preferences | Appearance & Behavior | Appearance,然后勾选 Sync with OS 复选框。 点击 Sync with OS 旁边的齿轮图标来选择您的首选主题。

Rust 插件更新

Rust 插件更新

IntelliJ Rust 现在完全支持 Cargo 功能,允许您使用智能的新 UI 对其进行配置。 只需一次点击即可开启和关闭工作区的功能,并且该插件的代码辅助会考虑这些设置。 在此博文中了解详细信息。

此外,该插件现在允许使用 Rustfmt 作为默认代码格式化程序。 只需在 Settings / Preferences | Languages & Frameworks | Rust | Rustfmt 中设置相应的复选框,之后整个文件重新格式化都将使用 Rustfmt。 目前,如果您在选择中调用 Reformat Code,将使用 IDE 的格式化程序。

得益于更多模板和使用自定义 cargo-generate 模板的选项,该插件的项目向导也得到了增强。

其他更新包括引入 WebAssembly 项目支持和用于名称解析的全新实验性引擎。

CLion 2020.2 新功能

CLion 2020.2 添加了 Makefile 项目并增强了 CMake 支持,能够涵盖各种 C++ 项目。 它能够更好地遵守 C++20 标准。 代码分析现在更加准确,且能够捕获更多严重错误,如悬空指针。 单元测试、代码覆盖率、嵌入式开发以及其他方面也得到显著增强。

项目模型

Makefile 项目支持

正在开发基于 Makefile 的项目? 从 CLion 的智能功能中获益——CLion 现在提供开箱即用的 Makefile 项目支持。 将包含顶级 Makefile 的文件夹作为项目打开,或在 Open 对话框中直接将 CLion 指向 Makefile。 IDE 会运行 make(使用 --just-print 选项以避免运行实际的构建),解析 make 命令的输出,并加载项目。 阅读这篇博文,了解详细信息、已知限制以及我们用于测试这一方法的项目列表。

简要导览

增强的 CMake 用户体验

增强了 CMake 用户体验

Build, Execution, Deployment | CMake 下的 CMake 配置文件设置采用新设计的 UI,我们还为这些设置添加了实用提示。 而且,现在可以在 Find Action 中使用适用于 CMake 项目的多个操作,如果您定期使用,可为任何一个或每个操作分配快捷键。

  • CMake 设置
  • 停止 CMake 项目重载
  • 打开 CMakeCache 文件

CMake 升级

CLion 现在捆绑 CMake 3.17,并添加了对其两个最新功能的初始支持:

  1. Ninja Multi-Config:您现在可以传递 -G "Ninja Multi-Config" 生成器选项,以便为每个配置生成 CLion 构建文件(请注意,CLion 暂时仍然只会为 CMake 配置文件使用一个选定的配置)。
  2. CMake 预编译头:使用 target_precompile_headers 命令将头文件添加到目标的 PRECOMPILE_HEADERS 和/或 INTERFACE_PRECOMPILE_HEADERS 属性。 CLion 会正确地处理这种预编译头。

简要导览

构建项目

重新编译单个文件

重新编译单个文件 操作通过快速检查本地变更来帮助您加快开发过程,而且现在可用于 Ninja 和 CMake 中使用的其他生成器并在 CLion 中受到支持。

得益于重要的错误修复,CLion 现在可以并行构建多个独立的项目,不会从一开始就互相阻碍。

代码分析

CLion 2020.2 中的代码分析得到大幅更新,提高了许多检查的准确性并能够涵盖更多用例。 此版本还继续优化了数据流分析,此功能之前在基于 Clangd 的引擎基础上进行了重新实现。

悬空指针

悬空指针

指向无效数据的指针会导致运行期问题。 典型的用例为 double-freeuse-after-free 组合。 如果这种悬空指针出现在局部范围内,CLion 现在会捕获它们,不会涉及指针算法,且宏不会阻止 CLion 执行分析。

Simplify

Simplify

Simplify 代码检查现在更加准确且会涵盖更多用例。 仅适用于以下类型的语句:

  • condition == true.
  • condition1? true : condition2.
  • if(condition1) return true; return condition2;
  • 用于相同分支的语句。

您可以在 Settings | Editor | Inspections | C/C++ | General | Simplifiable 语句中单独配置这些用例。

Loop condition is never updated

Loop condition is never updated

此 CLion 检查会检测循环中未更新循环条件的情况。 这与 Clang-Tidy 的 clang-tidy:bugprone-infinite-loop 相似,但适用于包含出口点的循环,并且能够处理包含 lambda 或引用的用例。

Unused code

Unused code

Unused code 检查已进行大幅更新。 在其他众多变更中,它现在适用于 using结构进行全局和局部定义的类型别名。

Inspection 微件和 Problems 视图

Inspection 微件和 Problems 视图

最后但同样重要的是,我们引入了新的 Inspection 微件。 它会显示当前文件中警告和错误的数量,并让您能够轻松地在其中导航。 您还可以配置高亮显示级别(就像之前配置 Hector 图标一样)。

如果您点击 Inspection 微件,Problems View 工具窗口就会打开 (View | Tool Window | Problems)。 它会显示当前文件中警告和错误的列表,帮助您导航到代码中出现问题的位置,并让您能够通过调用 Alt+Enter 快捷键直接从工具窗口修复这些问题。

C++20

今年,社区正式向 C++ 开发者提供新的语言标准,CLion 已支持其多个功能。 CLion 2020.2 中的语言引擎通常在 C++20 代码上更稳定。

C++20 关键字

C++20 关键字

在 CLion 2020.2 中进行代码高亮显示和补全时支持新增加的关键字:

  • char8_t
  • constevalconstinit
  • co_awaitco_returnco_yield
指定的初始值设定项

指定的初始值设定项

指定的初始值设定项中的代码补全现在适用于基类中的字段。

explicit(bool)

explicit(bool)

C++20 explicit(bool) 结构现在会正确地高亮显示。 它还为条件参数提供了名称提示,并在导航和重构中得到支持。

基于范围且包含初始值设定项的 for 循环

基于范围且包含初始值设定项的 for 循环

现在支持基于范围且包含 init 语句的 for 循环。 包括一些重构,例如针对循环中变量的 Rename

约束函数的结果

约束函数的结果

为使用概念 (Concept) 的代码添加了新的检查。 如果已经将受约束的函数调用的结果分配给声明为 auto 的局部变量,新检查会建议约束这些局部变量。

单元测试

Doctest 支持

Doctest 支持

CLion 2020.2 添加了对 C++ 的另一个单头框架 (Doctest) 的支持。 Doctest 在社区中深受喜爱,现在得到 CLion 支持,提供自动测试检测、运行/调试配置创建和用于显示测试结果的便捷内置测试运行程序。 阅读这篇专属博文,了解如何针对发布配置一组测试。
Catch2 模板测试

Catch2 模板测试

现在可以像对待其他测试类型一样,对 Catch2 中三种类型的测试进行识别和处理。

在 Google Test 中跳过测试

在 Google Test 中跳过测试

Google Test 中的 GTEST_SKIP() 宏能够在运行时跳过测试。 CLion 现已支持该宏。

代码覆盖率

代码覆盖率

CLion 2020.2 在您点击 Run with Coverage 按钮时会自动添加覆盖标记,提升了用户体验。 现在,如果您当前选定的 CMake 配置文件不包含用于覆盖的编译器选项,CLion 就会搜索带有通过 CMAKE_CXX_FLAGSCMAKE_C_FLAGS 传递的覆盖标记的 CMake 配置文件(如果未找到,就会创建一个)。

嵌入式开发:PlatformIO 插件

对于嵌入式开发,我们更新了 PlatformIO 插件,进行了显著改进:

platformio.ini 文件中的高亮显示

platformio.ini 文件中的高亮显示

PlatformIO 项目配置文件现在会正确地高亮显示,以便您更轻松地阅读和更新这些文件。

新运行/调试配置

新运行/调试配置

当您从 CLion 的 New Project 向导中创建新项目时,会自动添加许多实用的运行/调试配置。 例如,_PROGRAM_MONITOR_CLEAN_TEST 等。

PlatformIO 配置的 CMake 配置文件

PlatformIO 配置的 CMake 配置文件

CLion 现在会为 PlatformIO CMake 项目中的 CMAKE_CONFIGURATION_TYPES 条目自动创建 CMake 配置文件。

VCS

WSL 2 中安装的 Git

WSL 2 中安装的 Git

如果您使用 WSL 2 工具链开发并使用 WSL 2 上的 Git,CLion 现在将让您能够轻松地根据项目位置在 Git 可执行文件之间切换。 对于从 WSL 2(通过 \\wsl$ 路径)打开的项目,它会自动检测 WSL 2 中的 Git 可执行文件并切换全部 Git 相关功能以使用该文件。

GitHub 拉取请求

GitHub 拉取请求

CLion 2020.2 为 GitHub Pull Request 引入了一个更开阔的新视图。 它会显示特定 Pull Request 的全部详细信息(如消息、分支名称、作者、被指派者、更改的文件、提交和时间线)和预提交检查的结果。 它还会帮助执行许多操作,如开始审查、请求审查、附加评论或在 IDE 内合并 Pull Request。

了解详情

Go to Declaration or Usages

Go to Declaration or Usages

Go to Declaration or Usages 操作 (Ctrl+Click / Ctrl+B) 根据用例和 IDE 设置不同会表现不同:

  • 在符号用法上调用操作时,它会导航到该用法的声明。
  • 在声明上调用操作时,它会显示该声明用法的列表。
  • 在定义上调用操作时,它会显示相关声明或用法。 这取决于 Settings | Editor | General | Go to Declaration or Usages 中的设置。

性能改进

已解决一些 UI 冻结和速度降低问题。 为了避免编辑器性能下降,在宏定义内按 Enter 时,CLion 现在会插入反斜杠。 很有可能继续在新行上使用宏定义,这样就会防止 IDE 重复地重解析活动。

Rust 插件更新

Rust 插件更新

在 0.3 版本的插件中,将默认启用目前仍处于实验阶段的新宏扩展引擎。 此引擎会处理宏生成的 impl 块和模块声明,为代码的全部内容提供代码洞察,包括 tokioasync-std 等 crate。 在这篇博客文章中了解更多。

另一个主要更新是为 Rust 的 MSVC 工具链引入了初始调试器支持。 现在,您可以将 CLion 中捆绑的基于 LLDB 的调试器用于 Visual Studio 工具链,以便使用 Rust 的 MSVC 调试在 Windows 上构建的 Rust 代码。

其他增强包括新重构(Introduce Constant 与适用于文件和顶级项的 Move)、对 or_patterns 的初始支持、println! 等宏内格式文字中的错误突出显示、编辑器内文档呈现、链式方法调用的嵌入提示以及对 IntelliJ IDEA 中调试器工作流的改进。

了解详情

其他改进

  1. 由 JetBrains 维护、适用于 Microsoft Visual Studio C++ 工具链、基于 LLDB 的调试器得到大幅改进。 最主要的是:停止时调试对话不再冻结,线程现在根据其入口点函数自动命名,调试器的性能获得了显著改进,许多冻结和崩溃得到修复。
  2. CLion 2020.2 已捆绑更新的 GDB STL 调试器。
  3. 从现在开始,基于 Clangd 的引擎将是 CLion 中的默认语言引擎,且关闭它的选项已被移除。 Settings | Languages & Frameworks | C/C++ | Clangd 现在包含所用 LLVM Clang 修订版的信息,这样您就会了解在新版本中 C++ 支持和内置 Clang-Tidy 检查的相关信息。

CLion 2020.1 新功能

嵌入式开发

IAR 工具链

IAR 工具链

如果您在嵌入式项目中使用 IAR 编译器/工具链,现在在 CLion 中就可以使用。 收集编译器信息不会再失败,这意味着,使用 IAR 工具链的项目可以成功加载并在 CLion 中运行。

注意以下几点:

  • 需要 MinGW。
  • 有关在 IAR Embedded Workbench 上使用 CMake 的一些技巧
PlatformIO

PlatformIO

PlatformIO 是一个正在迅速普及的新生成生态系统。 要在您的嵌入式项目中利用它,请使用新的 PlatformIO for CLion 插件,这会:

  • 将 PlatformIO 项目类型添加到 New Project 向导。
  • 生成基于 CMake 的相应 PlatformIO 项目。
  • 为调试和上传自动创建配置。
  • 允许在线通过 PIO 统一调试器在 CLion 中进行调试。

还有更多! 查看官方文档以获取详细信息。

CUDA 支持

代码解析和代码辅助

现在可以正确解析和高亮显示 CUDA C 和 C++ 中的代码,包括所有 CUDA 特定的扩展。 这意味着代码导航、代码文档和其他代码辅助操作在 CUDA 代码中起作用。 此外,CLion 可以为内核调用完成尖括号。

让我们从 GitHub 克隆 ClaraGenomicsAnalysis 项目,并检查一下 CLion 在 CUDA 支持方面的功能。

New Project 向导

New Project 向导

CLion 中的 New Project 向导已添加一个新选项,可用于创建 CUDA 项目 - 库或可执行文件。 选择此选项时,它会生成示例 CMakeLists.txt 和 main.cu 文件。

文件扩展名和 CMake 目标

文件扩展名和 CMake 目标

新支持的 CUDA 文件扩展名 .cu.cuh 可以在新的 C/C++ 文件创建对话框中使用。 此对话框中要更新的可能目标列表包含一般的 CMake 和特定于 CUDA 的目标(通过 cuda_add_executablecuda_add_library 命令创建)。

了解详情

在 Windows 上开发

Clang-cl

Clang-cl

在 Windows 上,现在可以在 CLion 中使用 clang-cl,支持 8.0 及更高版本。

您可以从 LLVM 网站安装,或将其与 Visual Studio 工具一起安装。 完成后,请在 CLion 中选择 Visual Studio 工具链,然后指向工具链设置中的 clang-cl.exe

Visual Studio C++ 工具链的调试器

Visual Studio C++ 工具链的调试器

JetBrains 为 Visual Studio C++ 工具链开发的 LLDB 调试器现在是此工具链的默认调试器。 因此,您可以立即使用它!

请注意,应在 Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB 中明确启用对原生可视化工具的捆绑支持。

运行和调试配置

运程和嵌入式 GDB 的自定义目标

运程和嵌入式 GDB 的自定义目标

Remote GDB ServerEmbedded GDB Server 配置现在可用于自定义目标。 先前仅适用于 CMake 目标的这些配置,能够让您从本地计算机上运行的 CLion 实例中调试远程主机或微控制器上的应用程序。

如果您已创建这些配置,CLion 2020.1 会在项目文件夹的 projectFilesBackup 目录中存储之前的 Run/Debug Configuration 设置,并通知您这一情况。

支持在运行/调试配置中使用宏和路径变量

支持在运行/调试配置中使用宏和路径变量

您现在可以在 CMake、自定义构建和 Gradle Native 应用程序配置的 Program Arguments 和 Working Directory 字段中使用路径变量和宏。 宏可以帮助您获得以下对象的值:

  • 当前 CMake 运行配置的构建目录。
  • 当前 CMake 运行配置的生成目录。
  • 项目文件目录。
  • 等等。

FilePrompt/Prompt 宏可用于在运行/调试配置时显示文件选择器对话框或字符串输入对话框。

路径变量可以定义项目中广泛使用但位于项目目录以外的库的路径。

输入重定向

输入重定向

如果需要将输入从文件重定向至应用程序的 stdin,您现在可以执行该操作。 在配置中使用名为 Redirect input from 的新字段。 输入:

  • 相对路径(CLion 会预置工作目录路径 )。
  • 绝对路径(将针对运程配置重映射)。
  • 或 macros(如 FilePrompt)。

Clang 工具

Clangd 上的 DFA

Clangd 上的 DFA

CLion 的数据流分析 (DFA) 执行编译器通常不会为您执行的任务:它会分析数据如何在您的代码中流动并基于结果检测潜在问题。 它可以捕捉始终为 false/true 的条件、无限循环、缺失的返回声明、无限递归,等等。 在 2020.1 中,DFA 已迁移到基于 Clangd 的语言引擎,在性能上变得更加准确、精简。 这项工作仍在进行,不过已经获得一些好结果!

仅 Clangd 的补全

仅 Clangd 的补全

默认会启用一个新模式,其中补全完全由基于 Clangd 的语言引擎提供。 此模式解决了在混合来自多个引擎的代码补全结果时出现的优先级和排序问题。 此行为由 Settings | Languages & Frameworks | C/C++ | Clangd 中的 Code Completion 设置控制。

几十种修复和功能增强使这种新模式更准确和强大。

了解详情

ClangFormat

ClangFormat

现在,在您首次打开项目根中包含 .clang-format 配置文件的项目时,CLion 会检测到它并自动切换到 ClangFormat。

如果您在没有 .clang-format 配置文件的项目上启用 ClangFormat,CLion 会建议为您创建一个。

Clang-Tidy

Clang-Tidy

在项目中检测到 .clang-tidy 配置文件时,CLion 现在会自动停止为 Clang-Tidy 使用 IDE 设置。 此行为由 Settings | Editor | Inspections | C/C++ | General | Clang-Tidy 中的 Prefer .clang-tidy files over IDE settings 控制。

格式化程序和代码折叠

新命名设置

新命名设置

Struct 成员字段和类成员字段现在具有单独的命名设置。 您可以在 Settings | Editor | Code Style | C/C++ | Naming Convention 中查看这些设置。

代码折叠

代码折叠

可以在 CLion 中使用 #pragma region#pragma endregion 进行代码折叠。

重构更新

重构更新

调用 Change Signature 重构 (Ctrl+F6) 时,CLion 会更新函数的所有用法。 Change Signature 对话框中的新 Default value 字段让您能够指定要用于所有用法的参数的值。 留空可以像以前一样使用默认值类型。

相同的逻辑和新 Default value 字段适用于 Create Parameter From Usage 快速修复和 Add Parameter to Constructor 意图。

编辑器

快速文档

快速文档

快速文档现在会在鼠标悬停时出现,快速文档是一个万能工具,可以预览文档并获取函数签名、推理类型和宏替换的相关信息。

它可以由 Settings | Editor | Code Editing 中的设置 Show quick documentation on mouse move 控制。

JetBrains Mono 和 IntelliJ Light

JetBrains Mono 和 IntelliJ Light

编辑器中的默认字体已改为 JetBrains Mono,这是一种由 JetBrains 创建的新开源字体。 它专门设计用于使代码读取更容易。

新的默认浅色主题 IntelliJ Light 现在成为所有不同操作系统中的标准主题。 如果需要,您可以使用 View | Quick Switch Scheme | Theme 选择非默认主题。

拆分的终端会话

拆分终端会话

使用 CLion 2020.1,您可以垂直或水平拆分终端会话,以便并排运行它们。 您可以从 Terminal 调用上下文菜单来创建、导航和关闭拆分的终端会话。

版本控制

Commit 工具窗口和 Commit 对话框

新 Commit 工具窗口

更新的工具窗口可以为修改的文件和差异列表提供更大的空间。 在新窗口中,您还可以将就绪的更改添加到提交,迭代编写提交信息,以及选择暂存更改对应的提交。

默认会为新用户启用新 UI;现有用户可以在 Settings | Version Control | Commit 中切换到新 UI。

Interactively Rebase from Here

更新的真正交互式对话框让您能够执行以下操作:

  • 选择您要对分支中的每个提交执行的操作。
  • 查看显示已应用的操作的图表。
  • 查看提交详细信息。
  • 查看差异,并根据需要检查或重置变更。

从 IDE 安装 Git

Version Control 工具窗口现在称为 Git 工具窗口或者 Subversion/Mercurial/Perforce(如果您使用其中任何一个而不是 Git)。

您无需再手动预装 Git! 在您使用 Git 打开项目或从 VCS 导入项目时,如果您的计算机上没有 Git,CLion 将为您自动下载并安装 Git。

Rust 插件更新

Rust 插件更新

借助对 LLDB 支持的改进,IntelliJ Rust 现在可以正确地渲染枚举和基元类型,并在调用堆栈中显示混乱的函数名称。

插件中的另一个主要更新是 REPL 集成。 从 Tools | Rust REPL 调用控制台并将它用于原型设计和逐行代码检查。 该集成提供语法高亮显示和代码补全,以及一些方便的控制台操作:命令历史记录、自动换行、快速滚动到结尾,等等。

在语言支持方面,IntelliJ Rust 现在可以处理类型别名的 impl 块。 考虑到性能,我们仅为包含有限数量别名的类型启用此功能。

其他功能增强包括高亮显示未使用的局部变量、cfg 特性支持中的修复和新的 Lift return 检查。

其他改进

  • 所有远程配置现在都能从常用和统一的 SSH 配置 UI 中受益。 无论新的 SSH 配置源自哪里(远程工具链设置或远程 GDB 服务器配置),在 Settings | Tools | SSH Configurations 中都会有条目。
  • 如果您只想关注源代码,则可以选择新的 Zen 模式,它将免打扰模式全屏模式结合在一起。 要启用此模式,请使用 View | Appearance | Enter Zen Mode