系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、CLion Nova
- 二、目标
- 三、优势和改进
- 四、显著差异
- 五、如何安装 CLion Nova
- 六、分享您的反馈意见
- 总结
阿纳斯塔西娅-卡扎科娃
2023 年 11 月 9 日
前言
今天,我们宣布推出免费的 CLion 早期预览版,它使用 ReSharper C++/Rider C++ 语言引擎而非 CLion "传统 "引擎。预览版可通过我们专门的工具箱应用程序(Toolbox App)获取。2024 年的某个时候,根据收集到的反馈结果,CLion Nova 将并入 CLion。在此之前,您可以免费使用预览版,并在安装 CLion(经典版)时同时安装。
一、CLion Nova
JetBrains 的第一个 C++ 引擎是为 AppCode(我们为 iOS 和 macOS 开发人员设计的集成开发环境)设计的。它是 IntelliJ 平台的一部分,最初用 Java 编写,后来也用 Kotlin 编写。该引擎的方法和架构在基于 IntelliJ 的集成开发环境中为许多语言提供了很好的服务;但是,这种设计并不特别适合 C++ 语言。
为了更快地适应 C++ 的发展,并将引擎和集成开发环境进程分开,后来我们在 CLion 中添加了基于 clangd 的引擎。该引擎基于 clangd 的自定义分支,可检测任何警告和错误,并将其显示在编辑器中,还可建议快速修复方法,以及执行高亮、补全和某些导航操作。它还可用于数据流分析和 MISRA 检查等。与此同时,CLion 的 "传统 "引擎负责其他代码洞察功能,如重构。您可以在我们的 CLion 文档中查看详细的 “职责列表”。
Clangd 有很多优点,但在涉及整个项目的重构和操作时,它的帮助并不大。我们开发了基于 clangd 的索引器原型,甚至在其基础上实现了试验性的 “查找用法”(Find Usages),您可以在 CLion 中启用并评估该功能。
JetBrains 为 C++ 开发的另一个替代方案是 ReSharper C++ 和 Rider(用于 C++ 游戏开发)中使用的语言引擎。此外,还有一种通信协议可以让 Rider 等基于 IntelliJ 的集成开发环境与作为语言引擎的独立后端进程进行通信。现在,我们已将这一协议和原始引擎调整为适用于 CLion!
二、目标
在这个全新的实验性解决方案中,我们重点关注集成开发环境的响应速度、准确性和性能。我们有两个主要目标:
- 解决因使用 "传统 "引擎而导致的 CLion 长期存在的性能和质量问题。
- 统一我们所有 C++ 工具(即 CLion、Rider 和 ReSharper C++)的用户体验。
我们将新的实验预览版命名为 CLion Nova,而当前的 CLion 版本则是 CLion Classic。未来,我们计划将 CLion Nova 并入 CLion Classic。我们不打算推出新产品。
三、优势和改进
CLion Nova 仍然使用两种 C++ 语言引擎:基于 clangd 的引擎和 ReSharper C++/Rider 使用的引擎。CLion Classic 中的大部分功能在 CLion Nova 中应完全相同。
CLion Nova 在性能方面最显著的优势是
- 更快的高亮速度,尤其是在代码增量更新的情况下
- 反应更灵敏的用户界面
- 查找使用速度更快
- 重构时冻结和挂起的情况明显减少
- 更快的测试索引
这种统一还为 CLion Nova 带来了一些 CLion Classic 功能集未包含的新功能:
- 新的重构功能,如引入字段、引入命名空间别名、引入使用枚举和转换为作用域枚举。
- 新的检查、快速修复和意图,如冗余限定符、用明确的类型声明替换 auto 以及 #include 指令排序。
- 新的代码提示,如预处理指令提示和推送提示模式。
四、显著差异
与 CLion Classic 不同,CLion Nova 不使用 clangd 来实现代码补全或高亮等核心集成开发环境功能。不过,JetBrains 的 clangd fork 仍与新引擎一起运行,用于执行各种任务(ClangFormat、Clang-Tidy、MISRA 检查、数据流分析等)。
CLion Classic 用户在开始使用 CLion Nova 时,会有一些新的感觉:
- 当用户键入时,集成开发环境的某些反应方式会有所不同。
- 一些与代码洞察功能相关的 UI 元素和设置可能看起来不寻常,或出现在不熟悉的位置。
- 一些与代码相关的设置在 CLion Nova 中可能有不同的默认值。首次启动时,CLion Nova 会从 CLion Classic 迁移您的某些项目和应用程序设置,但不是全部。
- 在不同语言配置(如调试/发布)之间切换可能需要更多时间让代码洞察引擎跟上。此外,还没有为每个文件切换解析上下文的选项。
- ReSharper C++ 仅支持 Windows,而 Rider 则支持跨平台。不过,ReSharper C++/Rider引擎可能无法像Windows环境那样无缝支持非Windows环境。如果你遇到这种情况,不妨向我们报告。
此外,还列出了目前缺失的功能:
- 工具链: 在 CLion 中设置远程工作有几种选择。CLion Nova 支持本地资源的远程工作,而瘦客户端(Gateway)的远程工作则尚未提供。
- 语言 Objective-C 语言、CUDA(RSCPP-613、CPP-26144)和一些供应商特定的编译器扩展还不支持。
- 目前不支持一些意图和快速修复,如简化语句(CPP-35879)。
- 一些不太流行的重构也不支持。我们计划稍后重新引入 Move(CPP-35867)和 Inline Parameter 重构(CPP-35868)。
- JetBrains 的 AI Assistant 尚不可用于 CLion Nova。
五、如何安装 CLion Nova
CLion Nova 是免费的早期预览版,只能通过工具箱应用程序获取:
CLion Nova 是早期访问预览版,这意味着需要登录,但在 CLion Nova 并入 CLion 之前,您可以免费使用。我们将定期发布 CLion Nova 的更新,这些更新也将通过工具箱应用程序提供。
与 CLion Classic 相比,CLion Nova 的用户界面响应速度更快,集成开发环境整体性能更好,功能质量更高,尤其是在 C++ 代码重构方面。现在就试用并告诉我们您的想法!
六、分享您的反馈意见
CLion Nova 标志着一次重大变革,需要在各种环境中进行详细测试。因此,我们向您–我们的用户–寻求帮助!鉴于您拥有各种环境和用例,我们希望您测试 CLion Nova 并与我们分享您的经验。
我们特别想了解您对以下方面的看法
- 与 CLion Classic 相比,CLion Nova 中哪些功能在您的项目中效果更好?
- 哪些因素会干扰您的工作流程并妨碍您使用 CLion Nova 中的 IDE?这些干扰是 CLion Nova 特有的,还是在 CLion Classic 中也存在?
使用 CLion Nova 一段时间后,您将被要求提交一份反馈表。如果您能抽出时间,我们将不胜感激!
当然,我们的问题跟踪器也可以接收您的反馈,只是不要忘记提及您的问题与 CLion Nova 有关,而不是与 CLion Classic 有关。
总结
您的 CLion 团队
JetBrains
开发的动力