IntelliJ Quarkus工具最新改进回顾

IntelliJ Quarkus Tools 是一款免费开源的扩展,通过提供内容辅助、验证、运行配置以及许多其他功能,直接从您喜欢的 IDE 中帮助用户开发 Quarkus 应用程序。

此扩展基于 LSP4MP(即 MicroProfile)及其 Quarkus 附加组件,以及 Qute 语言服务器。这些都在我们流行的 Visual Studio Code 版 Quarkus Tools 扩展 中使用。

在过去的五个月里,我们 **竭尽全力** 改进 IntelliJ Quarkus Tools 的各个方面,平均每两周发布一个版本。

我们一直专注于性能改进、支持 JakartaEE 命名空间 Quarkus 3.x、Qute 模板支持,并普遍努力让 IntelliJ Quarkus Tools 不会打扰您的工作。那么,让我们更详细地看看我们完成了哪些工作。

提高稳定性和性能

我们已经解决了我们自定义语言服务器客户端(LSP4IJ)中的各种关键问题,这些问题此前会导致语言服务器冻结 IntelliJ IDEA。改进包括:

  • 在启动语言服务器之前等待索引完成。

  • 语言服务器请求不再阻塞编辑器。

  • 对某些请求进行去抖动以最大程度地减少繁重处理。

  • 新的请求取消支持,以避免不必要的处理。

  • 更快的验证和快速修复的延迟加载。

  • 减少了 quarkus 属性补全的负载大小。

  • 在 Quarkus 项目向导中预先获取 Quarkus 数据,以避免在单击 Next 按钮后等待。

这些修复有助于提供更流畅的编码体验、更好的整体性能,并且,我敢说,带来“开发者的快乐”。

语言服务器客户端改进

语言服务器控制台

虽然在大多数情况下对用户没有直接的好处,但新的语言服务器控制台视图在我们排查语言服务器问题时极其重要。

服务器状态可见,可通过右键单击停止和重新启动,并且可以启用不同级别的跟踪。

Language server configuration

IDE 与语言服务器之间的通信详细信息显示在“LSP 控制台”窗格中。在 verbose 模式下,消息可以展开以获取更多详细信息。

Language server traces

此功能已被证明在帮助我们诊断扩展性能问题方面非常有价值。它将使开发人员在出现任何问题时能够提供有价值的故障排除信息。

语言服务器首选项

现在有一个首选项页面,位于 Preferences | Languages & Frameworks | Language Servers 下,允许高级用户配置语言服务器调试和跟踪:语言服务器首选项

Application properties 支持

补全改进

application.properties 文件中的属性补全现在会显示图标和文档(前提是启用了 Preferences | Editor | General | Code Completion | Show the documentation popup):Quarkus 属性补全

枚举值也支持补全:Quarkus 属性枚举补全

行内提示

使用表达式值的属性现在会作为行内提示进行解析:解析的属性表达式作为行内提示

行内提示可以在 Preferences | Languages & Frameworks | MicroProfile | Properties 中禁用

Java 编辑改进

Vert.x reactive 路由的新代码提示

Vert.x reactive 路由现在会显示一个可点击的代码提示,该代码提示会像 JAX-RS 端点一样,在浏览器中打开配置的 URL。

Reactive routes

Qute 改进

我们投入了大量精力来提供最佳的 Qute 支持。

新的语法着色

Qute 解析器已被重写,以支持正确的语法着色。

Qute Syntax coloration - light theme

Qute Syntax coloration - dark theme

着色设置可在 Preferences | Editor | Color Scheme | Qute 中找到。

补全重塑

编辑 Qute 模板现在比以往任何时候都更好,支持新的括号自动闭合、改进的 HTML 集成、新的补全图标。特别是,增强的代码段补全,其行为类似于 IntelliJ 的实时模板,可用于不同的 Qute 部分。

Qute snippet completion

Section {#} 补全现在会显示由 Renarde 或 Web Bundler 等依赖项贡献的用户标签:Renarde 标签补全

改进了 {#insert} 和 {#include} 支持

{#insert}{#include} 部分可用于指定要在当前模板中包含的扩展模板。此版本通过验证、文档链接、补全和代码提示扩展了对这些部分的支持。

您可以通过 Ctrl+click(Mac 上为 Cmd+click)在模板之间(通过 {#include}{#insert} 引用为用户标签)进行导航,或者从 Java 文件中的模板定义导航到实际文件:Qute 导航

新的模板片段支持

Fragment 部分定义了模板的一部分,这部分可以被视为并呈现为单独的模板。片段的支持包括代码段补全、悬停和验证。在 Java 类中,您可以通过代码提示和文档链接导航到引用的 #fragmentqute 片段支持

Renarde 支持

IntelliJ Quarkus Tools 现在支持 Renarde Web 框架。

  • Renarde Controller 子类的公共方法即使缺少 HTTP 方法注解,也会自动显示可点击的代码提示,因为它们被视为有效的 JAX-RS 端点:Renarde 端点代码提示

  • 在 Renarde uriuriabs 命名空间上补全可列出可用的 Renarde 控制器:Renarde uri 补全

  • 可以使用快速修复向 {#form} 部分添加缺失的输入字段:Renarde 表单快速修复

类型安全的 Message Bundles 部分支持

我们为 Qute 类型安全的 Message Bundles 引入了部分支持。如果您在代码中定义了 @MessageBundle 类,您将在 Qute 模板中自动获得这些消息的自动补全,消息将显示为行内提示。

Message bundle support for Qute templates

目前尚不支持从属性文件中渲染消息。

验证

Java 文件

验证已通过以下功能得到增强:

  • Quarkus 3.1 及更高版本允许 GraphQL void 操作,并且现在会检查 GraphQL 指令的正确放置:GraphQL 指令放置验证

  • 检查 Quarkus BuildItem 子类是否是 finalabstractBuildItem 验证

严重性映射

我们尝试将语言服务器报告的一些 Microprofile 和 Qute 诊断绑定到 IntelliJ 的 Inspections 设置,因为这比使用专门的首选项页面更自然。但是,由于这有点 hack,因此 Inspections 设置大多被忽略,只有少数严重性设置被尊重。限制在每个检查描述中都有说明。

Inspection severity mapping

在大多数情况下

  • 作用域:值被忽略

  • 严重性:仅尊重 Error 和 (Weak) Warning。其他值表示不报告错误

  • 编辑器中的高亮显示:值被忽略

快速修复更新设置

我们引入了快速修复,允许您禁用某些错误的验证。例如,当您发现误报错误过多地干扰您的开发工作流程时,此功能非常有用。

现在可以通过快速修复从验证中排除 Java 文件中未赋值的 @ConfigProperty 属性(即未在 application.properties 中声明)或 application.properties 中声明的未知属性(看似未使用),例如:

Quick-fix to exclude property from validation

然后,您可以在 Preferences | Editor | Inspections | MicroProfile | Java files | Unassigned propertiesPreferences | Editor | Inspections | MicroProfile | Properties files | Unassigned properties 中更新这些排除项。

Inspections settings

同样,您可以从验证中排除特定的 Qute 模板或其整个模块。

Exclude Qute template from validation

然后,您可以转到 Preferences | Editor | Inspections | Qute | Templates | Validation

Qute validation settings

杂项改进

  • Quarkus 项目向导除了速度超快之外,现在还通过双击扩展来实现轻松(取消)选择。

  • 现在支持 WSL2 中的项目。

  • 运行配置已重命名为 Quarkus Dev Mode,以尽量避免与 IntelliJ Ultimate 内置的 Quarkus 支持混淆。

  • Vert.x reactive 路由、JAX-RS 和 Renarde 端点现在显示为隐式使用,以及 Quarkus @BuildStep 注解的类和 @Observer 注解的方法。

展望未来

Quarkus 的“开发者快乐”的宗旨显然也适用于您在 IDE 中花费的时间,而这正是 Red Hat Developer 团队所追求的。回顾过去五个月的发布,我们对在 IntelliJ IDEA 中改进 Quarkus 开发体验所取得的进展感到非常兴奋。

我们不会止步于此,因此请继续关注未来几周更多性能改进和激动人心的新功能。我们实际上计划通过发布到 EAP 发布频道来让您尽快获得这些新功能。

最后,如果您还没有这样做,请在 JetBrains marketplace 上留下您的评价。您的反馈至关重要!

如果您发现错误或对一些很棒的新功能有想法,请随时前往我们的Github 仓库并打开一个问题。