CLion 2018.3:远程开发,代码分析,性能等

哈Ha!

前几天我们发布了CLion 2018.3。 今年的第三个主要版本总结了我们在两个重要的开发领域中的工作- 改进语言支持远程开发

另外,我们终于:

  • 添加了代码分析工具;
  • 在一个文件,多个目标或整个项目的级别上重新编辑编辑器中用于汇编/重新汇编代码的命令;
  • 他们与其他基于IntelliJ平台的IDE一起,增加了对Git子模块和GitHub拉取请求的支持。
  • 改进的通用访问IDE可能性的方法(可访问性)。

图片

在下面阅读有关这些和其他创新的更多信息。 要尝试新功能和改进,请从我们的网站下载30天免费版本。

C ++语言支持


更多C ++ 17


CLion解析器已经了解了C ++ 17标准折叠表达式推论指南的两个新功能。 一方面,解析器中的更改尚不完全支持,但至少代码突出显示将更正确,对于用户定义的推导指南, IDE甚至可以正确显示类型,并且您可以看到它,例如,在调用有关功能参数。

图片

Clangd现在处于导航状态


上次我们写的内容是,CLion现在不仅使用其自己的语言引擎来处理C / C ++代码,而且还使用了另一种基于Clangd的实验性引擎。 启用它以在编辑器中显示错误和警告,我们继续前进,并在CLion 2018.3中基于其实施了一些代码导航和代码搜索操作。

基于Clangd的语言引擎提供的结果随后无论如何都要与从CLion引擎获得的结果相结合。 一个典型的示例是“查找用法”( Alt+F7 ):Clangd搜索在编辑器中打开的文件,而我们自己的引擎搜索其余文件。

额外使用Clangd语言引擎的其他操作的示例:

  • 转到声明( Ctrl+B / ⌘B )/转到定义( Ctrl+Alt+B / ⌥⌘B
  • 突出显示光标所在符号的所有包含
  • 快速文档( Ctrl+Q / F1

默认情况下,Clangd已启用,并在“设置” /“首选项” |“配置”中进行配置。 语言和框架| C / C ++ | lang声:

图片

也就是说,您可以在Clangd之上独立启用/禁用必要的功能-例如,仅显示错误或仅导航。 如果需要完全禁用Clangd,请取消选中此对话框中的所有复选框。

顺便说一句,Clang-Tidy可以在不使用Clangd的情况下运行,但是通过Clangd运行可以显着提高性能,因为它使用了缓存在Clangd中的AST树。

远程开发


CLion 2018.1发行版引入了Windows上与Windows Subsystem for Linux(WSL)子系统一起使用的功能。 Windows中内置的此Linux环境允许您在Windows上构建,运行和调试Linux应用程序。 然后我们说我们专门通过ssh(即作为远程子系统)实现了对WSL的支持。 这是使用完全远程配置的第一步。

因此,在CLion 2018.3中,我们宣布了对第一个大型远程开发版本的支持:

  • 在运行CLion的本地计算机上,它可能是Linux,Windows或macOS。
  • 在远程计算机上,CLion将在其中构建您的应用程序,运行和调试它,运行测试,到目前为止,只能有Linux。
  • 假定代码在本地计算机上。 CLion本身将其同步到远程计算机,并将标头搜索路径拉回本地,以在编辑器中快速解析代码。 对于Linux或macOS作为本地计算机,通过rsync进行同步;对于Windows,则通过sftpgzip进行同步。
  • 到目前为止,它仅适用于CMake上的项目。

图片

设置这样的远程配置非常容易-您只需要在“设置” /“首选项” |“设置”中创建一个远程工具链。 构建,执行,部署| 工具链,并在某些CMake配置文件中使用它。 有关详细说明,请参见我们的英语博客在线文档 。 与远程主机的同步进度显示在“文件传输”窗口(“查看” |“工具”窗口|“文件传输”)中,并在“设置/首选项” |“更改”中更改远程计算机上的连接参数和目录路径。 构建,执行,部署| 部署方式

在这个方向上可以做很多工作。 现在,如您所见,不支持将代码直接定位在远程计算机上的选项,不支持远程版本控制系统,不与远程终端集成,并且在设置连接本身方面存在许多小缺陷。 但是最主要的是- 现在可以使用CLion进行远程开发了!

自定义代码性能分析


CLion 2018.3提供了分析代码性能的功能。 在Linux上,提供了与Perf的集成;在macOS上,提供了DTrace 。 可以在“运行”菜单,导航面板和应用程序启动图标的上下文菜单中使用该新操作。 代码分析结果可在“ CPU Profiler”窗口(“查看” |“工具”窗口|“ CPU Profiler”)中找到。

图片

阅读更多有关您需要在计算机上安装什么才能使代码性能分析正常工作的信息,请阅读博客在线文档

值得注意的是,UI / UX仍处于试验阶段。 计划在2019.x版本中进行重大改进。 但是已经有了一些有用的东西,例如可以同时看到一个或多个线程,一次浏览到源代码的能力,等等​​。

生成和重建命令


构建命令的各种组合的数量已经增长到了如此之多,以至于我们决定将它们全部放在一个单独的菜单项-Build中。 整个项目的组装/重新组装,以及来自所有或选定的CMake概要文件,选定的配置以及一个特定文件的all目标。

图片

当然,这是针对CMake的。 对于编译数据库,只有特定文件的重建命令。

通用对话框:无所不包,无处不在搜索


CLion用户已经很长时间熟悉“无处不在搜索”( Double Shift )对话框,以及“查找操作”对话框( Ctrl+Shift+A / ⇧⌘A )来按名称搜索命令或设置,并熟悉用于⇧⌘A名称导航到文件,符号或类的对话框名字 现在,实际上是相同的对话!

图片

单独的对话框变成了单独的标签,切换通过Tab 。 同时,我们消除了与这些对话框相关的许多问题,包括失去焦点和尺寸不正确。

另一个新的通用对话框是Run Anything( Double Ctrl )。 通过它,您可以在正常模式下或在调试器下运行应用程序,还可以打开任何项目:

图片

检入Compilation_database.json


编译数据库是CLion支持一段时间的替代设计模型。 它非常方便,因为几乎可以从任何其他流行的或定制的设计模型中获得它 。 CLion可以从编译数据库中打开项目,正确解析代码并提供使用代码的所有智能方法。 唯一的弊端是缺乏以这种格式组装整个项目的信息,因此到目前为止,仅会从IDE中收集单个文件。

在此发行版中,我们为CLion添加了一个用于文件comp__database.json的方案,并且基于该方案,已经在文件本身中实现了检查。 例如,属性值的类型错误或通常缺少的属性:

图片

如果您仍然决定手动编写此类文件或更正现有文件,则检查非常有用。

编辑器性能和测试


在我们用户的许多转储中,可以看到IDE性能上的重大问题与IDE确定项目中可用测试列表的方式有关。 在2018.3版本中,我们使此过程变得很懒惰,现在,如果您尚未在编辑器中打开任何测试文件,则不会为它们建立索引。 此外,在导航到测试结果,自动完成测试宏等时,性能得到了改善。

编辑器增强


如您所知,在“快速文档”窗口( Ctrl+Q / F1 )中,CLion不仅可以显示文档和代码注释,还可以显示变量的推断类型和宏中的最终替换。 现在,此最终查询已格式化,并且关键字高亮显示。 对于具有多个嵌套级别的复杂宏非常方便,例如对于Boost:

图片

现在,TODO注释可以是多行,主要是缩进第二行和后续行-CLion会自动理解这是TODO注释的一部分:

图片

有些用户不方便使用标准主题,因为它们没有足够的对比度。 对于他们,我们添加了特殊的高对比度主题。 它只能在代码编辑器(Ctrl +`)或整个IDE(“设置/首选项|外观和行为|外观|主题”)中启用。

图片

我们与IntelliJ Platform一起,重新设计了IDE中的插件设置菜单(“设置” /“首选项” |“插件”)。 现在,使安装的插件保持最新状态,以及对现有的IDE插件的庞大存储库进行排序和筛选,变得更加容易。

版本控制系统


另一个重大的平台更改是对Git子模块的期待已久的支持。 现在,子模块还考虑了在CLion中使用VCS的所有操作:克隆项目,更新项目,比较版本(diff)等。

GitHub Pull Requests窗口已添加,您不仅可以查看所有Pull请求,还可以按作者或状态搜索/过滤它们。 一键创建任何分支请求,即可创建新分支。

演示版


有关用英语介绍CLion 2018.3新功能的传统视频:


接下来呢?


明年,我们计划继续开发基于Clangd的第二个附加语言引擎-让我们看看我们可以在其上实现哪些其他IDE功能。 我们将提高编辑人员的工作效率,完成并改善现有功能; 在CLion中支持远程开发的工作看起来尤其多样化。 通过集成,我们可以计划clang格式,以及Windows / MSVC的调试器。

而我们的重点将是嵌入式开发 。 最近, CLion OpenOCD + STM32CubeMX中一个非常受欢迎的支持插件的作者Elmot加入了我们的团队。 Ilya将继续将此功能集成到IDE中,但是我们计划在不久的将来完成内存视图并重新制作十六进制视图。

问题,愿望,错误报告和想法仅在评论中表达! 我们很乐意回答。

您的JetBrains CLion团队
发展动力

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


All Articles