您长期以来在一个版本中要求的所有内容-CLion 2018.2

哈Ha!

我们不知道窗外有多热,但是在JetBrains的这几周中,我们肯定有一个热门发布。 我们逐一发布了基于IntelliJ平台的几乎所有工具的2018.2更新版本:WebStorm,IntelliJ IDEA,PyCharm,DataGrip,GoLand,PhpStorm,RubyMine和CLion。

此版本对CLion团队特别有用,因为它包含了我们在三个非常重要领域中的工作成果:

  1. Clangd作为新的用于解析C ++代码的实验引擎的基础。
  2. 通过新的体系结构解决方案增强了 IDE 性能
  3. CLion支持的新设计模型

除了支持Google Sanitizers,还可以重建单个文件等等!

图片

下面我们将详细讨论改进和创新,最耐心的人现在可以从我们的网站下载30天的免费版本并在其项目或GitHub上专门准备的演示项目上尝试新的机会。

Clangd用于解析CLion中的C ++代码


早在三月,我们就告诉您,我们正在考虑CLion语言引擎的各种替代方案。 这是可以理解的-我想从根本上改善对当前语言功能的支持,更快地添加更多新的C ++芯片,编写更多更酷的和C ++特定的重构等。为此,您需要一个准确而快速的代码解析器。

我们将通过有条不紊地蚀刻各种错误和缺点来继续改进当前的解析器。 另外,我们决定尝试制作基于clangd的另一种语言引擎(这是clang的LSP协议的这种实现)。

如果直接查看结果,在CLion 2018.2中,除了主要的语言引擎之外,还有一个新的实验性语言在clangd上运行。 不仅如此,我们非常大胆,因此我们默认在Linux和macOS上将其打开。 不幸的是,在Windows上,发现了clangd处理内存令人不愉快的功能,默认情况下,我们关闭了该平台上的新引擎(但很有可能在2018.2版的第一个次要更新中已修复了该问题)。
您可以在“设置” /“首选项” |“启用”中禁用基于clangd的代码的实验性解析器。 语言和框架| C / C ++ | lang声:

图片

重要的是要了解:

  • 基于clangd的代码解析器与CLion本机解析器并行工作。
  • Clangd仅用于在编辑器中显示错误和警告。 对于其他所有内容(包括重构,错误修复(快速修复),导航,自动完成等),都使用其自己的CLion解析器。
  • 特别选择了Clang的错误和警告默认配置,以显示很多有关潜在错误的警告,但同时又不与基于自己的代码解析器在CLion中工作且默认启用的那些代码检查相矛盾。

警告您的问题,我会立即说是,我们计划尝试将其他智能IDE功能转换为Clangd,但是首先我们需要稳定当前的解决方案,进行更多测试,并一路解决许多复杂和基本的问题。

C ++代码的新检查


当一个函数接受多个相同类型的参数时,很容易出错,并且自己(和编译器)在调用该函数时互换相同类型的参数也很容易。 此类错误很难捕获,这意味着它们的成本很高。 但是在CLion 2018.2中,我们专门针对此类情况实施了新的检查代码。 它使用启发式算法分析参数名称和函数自变量,并能够检测错误更改自变量顺序的情况:

图片

重要说明:

  • 为避免误报,对于非常短的名称(少于3个字符),该算法将自动关闭。
  • 出于相同的原因,对于名称包含子字符串swap / inverse / rotate / backward / flip的函数,该算法将被禁用。
  • 出于多种技术原因,该检查仅在打开用于clangd代码的实验解析器时有效,并且仅在通过clangd打开clang-tidy代码分析器时才有效(这全部在上述``设置/首选项''|``语言和框架''|``C / C ++ | Clangd''中)。

IDE性能


在此版本中,我们故意在许多情况下困扰IDE挂起(UI冻结):在完成过程中,在“到处搜索”搜索中,导航到相关字符(通常用于在源文件和标头之间进行切换,反之亦然),在使用面包屑时(面包屑)进行导航。 该版本的第一批用户以及我们的Early Access Program的众多参与者已经评估了这些改进,并确认IDE的行为已得到显着改善,并且冻结的可能性大大降低。 这个方向的工作将在2018.3。

此外,我们已将内置代码格式化程序转换为lexer 。 当然,当通过解析器工作时(如前所述),其结果会更准确,但是操作时间会大大增加。 而且由于CLion中代码的格式化是在您键入代码时发生的,因此这里的挂起会非常不利地影响IDE速度的总体印象。 编辑者的响应能力下降,挂起变得明显,等等。

词法分析器上的格式化程序工作得很整齐,但是如果您仍然遇到代码格式化方面的问题,那么首先,请务必向我们介绍一下 ;其次,您始终可以切换到速度较慢但更准确的格式化程序解析器-为此,在注册表中有一个选项cidr.indent.lexer.only.cpp

新的设计模型:Gradle C ++和编译数据库


在2018.2之前,可以通过以下方式在CLion中打开项目:

  • 打开CMake项目。
  • 打开一个文件或没有CMake文件的整个文件夹。 同时,将禁用用于处理代码的许多智能功能。
  • 对于Rust代码,使用CLion中Rust插件,可以使用Cargo。
  • 使用第三方插件 CLion在Bazel上打开项目。

在2018.2中,我们向此列表添加了两个新选项:

  • 在Gradle上打开项目,指示build.gradle文件的IDE位置。 请注意,CLion现在仅支持C ++项目的新Gradle格式
    图片
  • 通过指定compile_commands.json文件的IDE位置,从编译数据库中打开项目。 到目前为止,在这种情况下,无法从CLion进行项目的组装和启动,因为编译数据库不包含有关整个项目的组装的信息。

但是在两种情况下,无论是Gradle数据库还是编译数据库,都可以使用所有用于处理代码的智能功能! 顺便说一下,编译数据库选项很有趣,因为实际上无论您的项目是什么-Makefiles,Ninja,Qbs,任何特定的项目模型-您都可以为您的项目生成一个编译数据库并在CLion中打开它!

同时,我们将继续致力于API,以在CLion中添加对新设计模型的支持!

CMake增强


CMake项目进行了一些重要的改进。 最重要的是,如果位于项目目录中的头文件在项目文件中使用并通过#include指令连接,则不再需要在CMake脚本中明确列出它们 ! 现在,CLion将其标记为设计标记,并且所有智能功能(如重构和自动完成)将在以下文件中提供:

图片

第二个重要的改进与外部工具(外部工具)的配置有关,可以通过命令或作为应用程序启动配置的一部分来调用它。 现在可以在其中使用包含各种CMake变量的宏。 例如,程序集目录或可执行文件的名称:

图片

动态代码分析工具


对于Valionnd Memcheck(在2017.3版的CLion中受支持),可以导出然后导入分析结果:

图片

同样在此版本中,CLion引入了对另一种用于动态代码分析的工具-Google Sanitizers的支持 。 要启用它们,必须在项目的CMake脚本中显式指定特殊的-fsanitize ,然后,如果使用的Clang版本至少为3.8.0或GCC版本至少为5.0.0,CLion将能够自动检测消毒剂的使用并在其中显示其工作结果。特殊窗口:

图片

在其中,您不仅可以查看找到的错误的列表,还可以查看源代码(并导航至该代码),研究有关框架的信息,观察错误路径。 在我们的英文博客文章中,详细了解CLion中受支持的消毒剂和设置。

重新组装一个文件


对于CLion 2018.2中的项目模型CMake和编译数据库,可以重建一个文件而不会导致重建整个项目。 为此,请在“运行-重新编译”菜单中执行一个操作,或者在Linux / Windows上使用Shift + Ctrl + F9组合键,在macOS上使用⇧⌘F9(在默认布局下):

图片

此功能是一种快速检查您对文件的当前更改没有破坏整个项目的组合的好方法。 如果感兴趣的细节,调用哪种编译命令以及如何选择程序集类型,您可以在我们的博客中详细阅读。

资料库


根据我们在Twitter上的调查结果,许多CLion用户在使用C / C ++开发项目时会转向各种数据库。 因此,从此发行版开始,IDE中已包含一个用于处理数据库和SQL代码的插件。 它是数据库环境DataGrip的完整功能类似物。 因此,这是Mobr于Habr上有关Mobre DataGrip 2018.2创新的文章。您可能也有兴趣阅读。

不仅如此!


简要介绍其他改进:


我们的开发律师提供的有关CLion 2018.2新功能的传统英语录像:


顺便说一下,直到2018年8月1日(星期三)莫斯科时间(GMT + 3), 我们将为所有JetBrains Toolbox产品提供50%的折扣

有什么问题吗 我们很乐意在评论中回答!

您的JetBrains CLion团队
发展动力

Source: https://habr.com/ru/post/zh-CN418729/


All Articles