CLion 2020.3 对开发流程的关键部分进行了令人期待的重大改进,包括代码分析、运行和调试应用程序以及单元测试。 对于嵌入式项目,CLion 现在开始支持 MISRA C 和 C++。 Qt 用户可以从专门为使用 Qt 代码而优化的 IDE 功能中受益。
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 中,您现在可以使用脚本指定启动运行/调试配置的环境。 您将在所有应用程序和单元测试配置中找到此功能的新设置。
不必再等待了! 可以在为项目编制索引的同时编辑运行/调试配置。
CLion 现在支持 CMake 特定的测试运行程序 CTest。 这意味着将检测到使用 CTest 运行的测试列表,并且 IDE 会自动为它们创建运行/调试配置。 启动测试时,结果将呈现在内置测试运行程序中,您可以在其中调试测试,仅重新运行失败的测试等。
版本 2020.3 增强了 CLion 对世界上最热门的 C++ 单元测试框架 Google Test 的支持(2020 年开发者生态系统调查显示有 31% 的 C++ 开发者使用 Google Test)。
DISABLED 前缀的测试)也将显示在测试树中并具有相应的图标。
CLion 2020.3 为 MISRA C 2012 和 MISRA C++ 2008(在嵌入式开发中,尤其是在汽车行业中广泛使用的准则)提供了部分支持。 这种支持可在开发周期的早期揭示不兼容之处,从而加快此类项目的开发速度。 CLion 的 Confluence 页面上提供了当前支持的检查列表。
CLion 2020.3 改进了 Unused Value 检查,此检查可捕获变量值在分配后从未使用的情况。 现在,也可以将其调整为遵循建议使用默认变量初始值设定项的样式。 用于在此类情况下关闭检查的新选项已添加到设置中。
新的 Extract Lambda Parameter 重构已添加到 CLion 中。 它使用作为相应参数传递的 lambda 表达式将表达式或语句提取到新参数中。 例如,语句可以是传递给排序函数的比较器。
New Project 对话框将建议 Qt Console Executable 和 Qt Widgets Executable 项目类型。 您还可以选择 Qt CMake 前缀路径、项目中要使用的 C++ 语言标准以及 Qt 版本。 使用相应的模板生成新项目。
New 菜单 (Alt+Insert) 中的新 QT UI 类条目可帮助您同时创建 Qt 类和 .ui 文件 。 填写类名称并选择父类(QWidget、QMainWindow 或 QDialog)。 生成 .h/.cpp/.ui 文件时将使用文件名库作为其文件名。 生成的文件遵循 Settings/Preferences | Editor | File and Code Templates 中列出的模板 - Qt Class、Qt Class Header 和 Qt Designer Form。
信号和槽是 Qt 的核心功能,因为它们是用于对象之间通信的实体。 现在,CLion 知道何时必须补全信号或槽,并且只会筛选补全下拉列表中的相应成员。
在 CLion 2020.3 中,Qt 项目中的自动导入建议已调整为遵循 Qt 的最常用样式。
使用各种包装器(如 ccache、libtool、dolt、slibtool 和 jlibtool)的 Makefile 项目现在可以成功加载到 CLion 中。 详细了解仍然存在的部分限制。
现在,在 CLion 中设置 Makefile 项目变得更加轻松 - 加载项目时,将自动为顶级 Makefile 中的目标创建运行/调试配置。 现在,要运行和调试,您只需将配置指向已构建的可执行文件。
Recompile 操作 (Ctrl+Shift+F9) 通过编译单个文件而不构建整个项目来帮助加快开发过程。 现在,它也适用于 Makefile 项目!
在 CLion 2020.3 中,现在可以在 CLion 中保留多个 CMake 配置文件,同时禁用当前不使用的配置文件。 这样有助于缩短项目的加载时间,并且可以免受暂时不可用(如当前已关闭的远程配置)的配置文件中冗余故障的影响。 可从 CMake 工具窗口和 CMake Profiles 设置对话框中使用此选项。
Search Everywhere 对话框现在包括 Git 选项卡。 它有助于查找提交哈希和消息、标记以及分支。 您还可以在搜索字段中执行简单的数学计算。
现在,将根据正在使用的版本控制系统来命名 VCS 菜单。 我们移除了除对项目进行版本控制最有用的操作以外的所有其他操作,使菜单变得更加简洁。
此外,Commit 屏幕上现在明确显示了两个最热门的按钮 Commit 和 Commit and Push…。
现在,您可以直接从 CLion 暂存变更。 要启用此功能,请转到 Preferences/Settings | Version Control | Git,然后勾选 Enable staging area 复选框。 点击 + 图标,将文件添加到 Commit 视图的全新 Staged 节点中。 您还可以直接从间距或在 Diff 视图中暂存变更。 要了解详情,请阅读我们的博文。
现在,在初始配置远程工具链时,会将本地标记为 Excluded 的目录自动标记为这些工具链的 Excluded paths。 并且,对已同步的项目进行更改时,CLion 将显示更新通知,并建议更新 Excluded paths 的列表。
CLion 2020.3 支持 Code With Me (EAP),这是 JetBrains 为协作开发和结对编程提供的一项新服务。 利用 Code With Me,您可以与其他人共享 IDE 中当前打开的项目,并实时协同处理。 您可以立即访问插件市场 (Preferences / Settings | Plugins | Marketplace) 下载。 查看这些文章以详细了解 Code With Me。
CLion 2020.3 提供了改进的欢迎屏幕。 新的布局使最常用的操作触手可及,可让您立即访问最近的项目、自定义选项和插件设置。
现在,可以通过将选项卡拖放到主编辑器窗口的一侧来拆分编辑器。 Open in Right Split 操作可在文件处于打开状态时垂直拆分编辑器。
您可以从 Project 视图或其他导航弹出窗口(例如 Recent Files 和 Search Everywhere)调用此操作 (Shift+Enter)。
CLion 现在可与您的操作系统主题同步。 要启用此功能,请转到 Settings / Preferences | Appearance & Behavior | Appearance,然后勾选 Sync with OS 复选框。 点击 Sync with OS 旁边的齿轮图标来选择您的首选主题。
IntelliJ Rust 现在完全支持 Cargo 功能,允许您使用智能的新 UI 对其进行配置。 只需一次点击即可开启和关闭工作区的功能,并且该插件的代码辅助会考虑这些设置。 在此博文中了解详细信息。
此外,该插件现在允许使用 Rustfmt 作为默认代码格式化程序。 只需在 Settings / Preferences | Languages & Frameworks | Rust | Rustfmt 中设置相应的复选框,之后整个文件重新格式化都将使用 Rustfmt。 目前,如果您在选择中调用 Reformat Code,将使用 IDE 的格式化程序。
得益于更多模板和使用自定义 cargo-generate 模板的选项,该插件的项目向导也得到了增强。
其他更新包括引入 WebAssembly 项目支持和用于名称解析的全新实验性引擎。
CLion 2020.2 添加了 Makefile 项目并增强了 CMake 支持,能够涵盖各种 C++ 项目。 它能够更好地遵守 C++20 标准。 代码分析现在更加准确,且能够捕获更多严重错误,如悬空指针。 单元测试、代码覆盖率、嵌入式开发以及其他方面也得到显著增强。
Build, Execution, Deployment | CMake 下的 CMake 配置文件设置采用新设计的 UI,我们还为这些设置添加了实用提示。 而且,现在可以在 Find Action 中使用适用于 CMake 项目的多个操作,如果您定期使用,可为任何一个或每个操作分配快捷键。
CLion 现在捆绑 CMake 3.17,并添加了对其两个最新功能的初始支持:
-G "Ninja Multi-Config" 生成器选项,以便为每个配置生成 CLion 构建文件(请注意,CLion 暂时仍然只会为 CMake 配置文件使用一个选定的配置)。 target_precompile_headers 命令将头文件添加到目标的 PRECOMPILE_HEADERS 和/或 INTERFACE_PRECOMPILE_HEADERS 属性。 CLion 会正确地处理这种预编译头。
重新编译单个文件 操作通过快速检查本地变更来帮助您加快开发过程,而且现在可用于 Ninja 和 CMake 中使用的其他生成器并在 CLion 中受到支持。
得益于重要的错误修复,CLion 现在可以并行构建多个独立的项目,不会从一开始就互相阻碍。
CLion 2020.2 中的代码分析得到大幅更新,提高了许多检查的准确性并能够涵盖更多用例。 此版本还继续优化了数据流分析,此功能之前在基于 Clangd 的引擎基础上进行了重新实现。
指向无效数据的指针会导致运行期问题。 典型的用例为 double-free 和 use-after-free 组合。 如果这种悬空指针出现在局部范围内,CLion 现在会捕获它们,不会涉及指针算法,且宏不会阻止 CLion 执行分析。
Simplify 代码检查现在更加准确且会涵盖更多用例。 仅适用于以下类型的语句:
condition == true.condition1? true : condition2.if(condition1) return true; return condition2; 您可以在 Settings | Editor | Inspections | C/C++ | General | Simplifiable 语句中单独配置这些用例。
此 CLion 检查会检测循环中未更新循环条件的情况。 这与 Clang-Tidy 的 clang-tidy:bugprone-infinite-loop 相似,但适用于包含出口点的循环,并且能够处理包含 lambda 或引用的用例。
Unused code 检查已进行大幅更新。 在其他众多变更中,它现在适用于 using结构进行全局和局部定义的类型别名。
最后但同样重要的是,我们引入了新的 Inspection 微件。 它会显示当前文件中警告和错误的数量,并让您能够轻松地在其中导航。 您还可以配置高亮显示级别(就像之前配置 Hector 图标一样)。
如果您点击 Inspection 微件,Problems View 工具窗口就会打开 (View | Tool Window | Problems)。 它会显示当前文件中警告和错误的列表,帮助您导航到代码中出现问题的位置,并让您能够通过调用 Alt+Enter 快捷键直接从工具窗口修复这些问题。
今年,社区正式向 C++ 开发者提供新的语言标准,CLion 已支持其多个功能。 CLion 2020.2 中的语言引擎通常在 C++20 代码上更稳定。
在 CLion 2020.2 中进行代码高亮显示和补全时支持新增加的关键字:
char8_tconsteval 和 constinitco_await、co_return 和 co_yield
指定的初始值设定项中的代码补全现在适用于基类中的字段。
C++20 explicit(bool) 结构现在会正确地高亮显示。 它还为条件参数提供了名称提示,并在导航和重构中得到支持。
for 循环 现在支持基于范围且包含 init 语句的 for 循环。 包括一些重构,例如针对循环中变量的 Rename。
为使用概念 (Concept) 的代码添加了新的检查。 如果已经将受约束的函数调用的结果分配给声明为 auto 的局部变量,新检查会建议约束这些局部变量。
CLion 2020.2 在您点击 Run with Coverage 按钮时会自动添加覆盖标记,提升了用户体验。 现在,如果您当前选定的 CMake 配置文件不包含用于覆盖的编译器选项,CLion 就会搜索带有通过 CMAKE_CXX_FLAGS 和 CMAKE_C_FLAGS 传递的覆盖标记的 CMake 配置文件(如果未找到,就会创建一个)。
对于嵌入式开发,我们更新了 PlatformIO 插件,进行了显著改进:
PlatformIO 项目配置文件现在会正确地高亮显示,以便您更轻松地阅读和更新这些文件。
当您从 CLion 的 New Project 向导中创建新项目时,会自动添加许多实用的运行/调试配置。 例如,_PROGRAM、_MONITOR、_CLEAN、_TEST 等。
CLion 现在会为 PlatformIO CMake 项目中的 CMAKE_CONFIGURATION_TYPES 条目自动创建 CMake 配置文件。
如果您使用 WSL 2 工具链开发并使用 WSL 2 上的 Git,CLion 现在将让您能够轻松地根据项目位置在 Git 可执行文件之间切换。 对于从 WSL 2(通过 \\wsl$ 路径)打开的项目,它会自动检测 WSL 2 中的 Git 可执行文件并切换全部 Git 相关功能以使用该文件。
CLion 2020.2 为 GitHub Pull Request 引入了一个更开阔的新视图。 它会显示特定 Pull Request 的全部详细信息(如消息、分支名称、作者、被指派者、更改的文件、提交和时间线)和预提交检查的结果。 它还会帮助执行许多操作,如开始审查、请求审查、附加评论或在 IDE 内合并 Pull Request。
Go to Declaration or Usages 操作 (Ctrl+Click / Ctrl+B) 根据用例和 IDE 设置不同会表现不同:
Settings | Editor | General | Go to Declaration or Usages 中的设置。 已解决一些 UI 冻结和速度降低问题。 为了避免编辑器性能下降,在宏定义内按 Enter 时,CLion 现在会插入反斜杠。 很有可能继续在新行上使用宏定义,这样就会防止 IDE 重复地重解析活动。
在 0.3 版本的插件中,将默认启用目前仍处于实验阶段的新宏扩展引擎。 此引擎会处理宏生成的 impl 块和模块声明,为代码的全部内容提供代码洞察,包括 tokio 和 async-std 等 crate。 在这篇博客文章中了解更多。
另一个主要更新是为 Rust 的 MSVC 工具链引入了初始调试器支持。 现在,您可以将 CLion 中捆绑的基于 LLDB 的调试器用于 Visual Studio 工具链,以便使用 Rust 的 MSVC 调试在 Windows 上构建的 Rust 代码。
其他增强包括新重构(Introduce Constant 与适用于文件和顶级项的 Move)、对 or_patterns 的初始支持、println! 等宏内格式文字中的错误突出显示、编辑器内文档呈现、链式方法调用的嵌入提示以及对 IntelliJ IDEA 中调试器工作流的改进。
Settings | Languages & Frameworks | C/C++ | Clangd 现在包含所用 LLVM Clang 修订版的信息,这样您就会了解在新版本中 C++ 支持和内置 Clang-Tidy 检查的相关信息。
如果您在嵌入式项目中使用 IAR 编译器/工具链,现在在 CLion 中就可以使用。 收集编译器信息不会再失败,这意味着,使用 IAR 工具链的项目可以成功加载并在 CLion 中运行。
注意以下几点:
PlatformIO 是一个正在迅速普及的新生成生态系统。 要在您的嵌入式项目中利用它,请使用新的 PlatformIO for CLion 插件,这会:
还有更多! 查看官方文档以获取详细信息。
现在可以正确解析和高亮显示 CUDA C 和 C++ 中的代码,包括所有 CUDA 特定的扩展。 这意味着代码导航、代码文档和其他代码辅助操作在 CUDA 代码中起作用。 此外,CLion 可以为内核调用完成尖括号。
让我们从 GitHub 克隆 ClaraGenomicsAnalysis 项目,并检查一下 CLion 在 CUDA 支持方面的功能。
CLion 中的 New Project 向导已添加一个新选项,可用于创建 CUDA 项目 - 库或可执行文件。 选择此选项时,它会生成示例 CMakeLists.txt 和 main.cu 文件。
新支持的 CUDA 文件扩展名 .cu 和 .cuh 可以在新的 C/C++ 文件创建对话框中使用。 此对话框中要更新的可能目标列表包含一般的 CMake 和特定于 CUDA 的目标(通过 cuda_add_executable 和 cuda_add_library 命令创建)。
在 Windows 上,现在可以在 CLion 中使用 clang-cl,支持 8.0 及更高版本。
您可以从 LLVM 网站安装,或将其与 Visual Studio 工具一起安装。 完成后,请在 CLion 中选择 Visual Studio 工具链,然后指向工具链设置中的 clang-cl.exe。
JetBrains 为 Visual Studio C++ 工具链开发的 LLDB 调试器现在是此工具链的默认调试器。 因此,您可以立即使用它!
请注意,应在 Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB 中明确启用对原生可视化工具的捆绑支持。
Remote GDB Server 和 Embedded GDB Server 配置现在可用于自定义目标。 先前仅适用于 CMake 目标的这些配置,能够让您从本地计算机上运行的 CLion 实例中调试远程主机或微控制器上的应用程序。
如果您已创建这些配置,CLion 2020.1 会在项目文件夹的 projectFilesBackup 目录中存储之前的 Run/Debug Configuration 设置,并通知您这一情况。
您现在可以在 CMake、自定义构建和 Gradle Native 应用程序配置的 Program Arguments 和 Working Directory 字段中使用路径变量和宏。 宏可以帮助您获得以下对象的值:
FilePrompt/Prompt 宏可用于在运行/调试配置时显示文件选择器对话框或字符串输入对话框。
路径变量可以定义项目中广泛使用但位于项目目录以外的库的路径。
如果需要将输入从文件重定向至应用程序的 stdin,您现在可以执行该操作。 在配置中使用名为 Redirect input from 的新字段。 输入:
CLion 的数据流分析 (DFA) 执行编译器通常不会为您执行的任务:它会分析数据如何在您的代码中流动并基于结果检测潜在问题。 它可以捕捉始终为 false/true 的条件、无限循环、缺失的返回声明、无限递归,等等。 在 2020.1 中,DFA 已迁移到基于 Clangd 的语言引擎,在性能上变得更加准确、精简。 这项工作仍在进行,不过已经获得一些好结果!
默认会启用一个新模式,其中补全完全由基于 Clangd 的语言引擎提供。 此模式解决了在混合来自多个引擎的代码补全结果时出现的优先级和排序问题。 此行为由 Settings | Languages & Frameworks | C/C++ | Clangd 中的 Code Completion 设置控制。
几十种修复和功能增强使这种新模式更准确和强大。
现在,在您首次打开项目根中包含 .clang-format 配置文件的项目时,CLion 会检测到它并自动切换到 ClangFormat。
如果您在没有 .clang-format 配置文件的项目上启用 ClangFormat,CLion 会建议为您创建一个。
在项目中检测到 .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,这是一种由 JetBrains 创建的新开源字体。 它专门设计用于使代码读取更容易。
新的默认浅色主题 IntelliJ Light 现在成为所有不同操作系统中的标准主题。 如果需要,您可以使用 View | Quick Switch Scheme | Theme 选择非默认主题。
使用 CLion 2020.1,您可以垂直或水平拆分终端会话,以便并排运行它们。 您可以从 Terminal 调用上下文菜单来创建、导航和关闭拆分的终端会话。
更新的工具窗口可以为修改的文件和差异列表提供更大的空间。 在新窗口中,您还可以将就绪的更改添加到提交,迭代编写提交信息,以及选择暂存更改对应的提交。
默认会为新用户启用新 UI;现有用户可以在 Settings | Version Control | Commit 中切换到新 UI。
更新的真正交互式对话框让您能够执行以下操作:
Version Control 工具窗口现在称为 Git 工具窗口或者 Subversion/Mercurial/Perforce(如果您使用其中任何一个而不是 Git)。
您无需再手动预装 Git! 在您使用 Git 打开项目或从 VCS 导入项目时,如果您的计算机上没有 Git,CLion 将为您自动下载并安装 Git。
借助对 LLDB 支持的改进,IntelliJ Rust 现在可以正确地渲染枚举和基元类型,并在调用堆栈中显示混乱的函数名称。
插件中的另一个主要更新是 REPL 集成。 从 Tools | Rust REPL 调用控制台并将它用于原型设计和逐行代码检查。 该集成提供语法高亮显示和代码补全,以及一些方便的控制台操作:命令历史记录、自动换行、快速滚动到结尾,等等。
在语言支持方面,IntelliJ Rust 现在可以处理类型别名的 impl 块。 考虑到性能,我们仅为包含有限数量别名的类型启用此功能。
其他功能增强包括高亮显示未使用的局部变量、cfg 特性支持中的修复和新的 Lift return 检查。
Settings | Tools | SSH Configurations 中都会有条目。