The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Quarkus Tools for IntelliJの最新改良点のまとめ

Quarkus Tools for IntelliJ は、無料でオープンソースのエクステンションです。コンテンツアシスト、検証、実行設定、その他多くの機能をお気に入りのIDEから利用でき、Quarkusアプリケーションの開発を支援します。

This extension is based on the LSP4MP (i.e. MicroProfile) and its Quarkus add-on, and the Qute language server. These are all used in our popular Quarkus Tools extension for Visual Studio Code.

この5ヶ月間、私たちはQuarkus Toolsを可能な限り改善するため、平均して2週間に1つのペースでリリースを行うなど、 本当に 懸命に取り組んできました。

パフォーマンスの改善、Quarkus 3.xのJakartaEEネームスペースのサポート、Quteテンプレートのサポート、そして一般的にQuarkus Toolsを邪魔しないようにすることに注力してきました。では、何が達成されたのかを詳しく見ていきましょう。

安定性とパフォーマンスの向上

カスタムLanguage Serverクライアント(LSP4IJ)の様々な重大な問題に対処しました。改善点は以下のとおりです:

  • 言語サーバーを起動する前に、インデックス作成が終了するまで待つ。

  • 言語サーバーのリクエストがエディタをブロックしなくなりました。

  • 一部のリクエストをデバウンスし、重い処理を最小限に抑える

  • 不必要な処理を避けるための新しいリクエスト・キャンセル・サポート。

  • 検証の高速化とクイックフィックスの遅延ロード。

  • クアルカスの特性を補完するペイロードサイズを縮小。

  • QuarkusプロジェクトウィザードでQuarkusデータを事前に取得することで、 Next ボタンをクリックした後の待ち時間を回避できます。

これらの修正は、よりスムーズなコーディング体験、全体的なパフォーマンスの向上、そしてあえて言うなら「開発者の喜び」に貢献する。

言語サーバー・クライアントの改善

言語サーバー・コンソール

ほとんどの場合、ユーザーには直接役立ちませんが、新しい言語サーバーのコンソールビューは、言語サーバーの問題をトラブルシューティングする必要がある場合に非常に重要です。

サーバーの状態を見ることができ、右クリックで停止と再起動が可能で、さまざまなレベルのトレースを有効にすることができる:

Language server configuration

IDEと言語サーバー間の通信の詳細は、"LSP consoles "ペインで確認できます。 verbose モードでは、メッセージを拡大して詳細を見ることができます:

Language server traces

この機能は、エクステンションのパフォーマンス上の問題を診断する上で非常に有用であることが証明されています。問題が発生した場合に備えて、ユーザーは貴重なトラブルシューティング情報を提供できるようになります。

言語サーバーの設定

A preference page is now available, under Preferences | Languages & Frameworks | Language Servers, allowing power users to configure language servers debugging and tracing: Language servers preferences

アプリケーション・プロパティのサポート

完成度の向上

Properties completion in application.properties files now displays icons and documentation (provided Preferences | Editor | General | Code Completion | Show the documentation popup is enabled): Quarkus properties completion

Completion is also available for enum values: Quarkus properties enum completion

インレーのヒント

Properties using expression values are now resolved as inlay hints: Resolved property expression as inlay hint

インレイヒントは Preferences | Languages & Frameworks | MicroProfile | Properties

Java編集の改善

Vert.xリアクティブルート用の新しいコードレンズ

Vert.xリアクティブ・ルートは、JAX-RSエンドポイントと同様に、設定されたURLへのブラウザを開く、クリック可能なコードレーンを表示するようになりました:

Reactive routes

キュート改善

我々は、最高のQuteサポートを提供するために多大な努力を払ってきた。

新しい構文のカラーリング

Quteパーサーは、適切な構文の色分けができるように書き直されました:

Qute Syntax coloration - light theme

Qute Syntax coloration - dark theme

カラーリングの設定は Preferences | Editor | Color Scheme | Qute

完成の再現

新しい括弧の自動クローズ、HTMLとの統合の改善、新しい補完アイコンなど、Quteテンプレートの編集がこれまで以上に改善されました。特に、強化されたスニペット補完は、IntelliJのライブテンプレートのように動作し、異なるQuteセクションで利用できます:

Qute snippet completion

Section {#} completion now displays user tags contributed by dependencies, like Renarde or Web Bundler: Renarde tags completion

insert}と{#include}のサポートの改善

{#insert}{#include} セクションを使用して、現在のテンプレートに含める拡張テンプレートを指定することができます。このリリースでは、バリデーション、ドキュメントリンク、補完、コードレンズでこれらのセクションのサポートを拡張しています。

You can navigate by Ctrl+click (Cmd+click on Mac), from one template to another (referenced as user tags, via {#include} or {#insert}), or from a template definition from a java file to the actual file: Qute navigation

新しいテンプレート・フラグメントのサポート

Fragment sections define a part of the template that can be treated and rendered as a separate template. Support for fragments includes snippet completion, hover and validation. In a java class, you can navigate to a referenced #fragment via code lens and document link qute fragment support

レナルデ・サポート

Quarkus Toolsが Renarde ウェブフレームワークをサポートするようになりました:

  • Public methods of sub-classes of a Renarde Controller automatically show a clickable codelens, even though they’re lacking a HTTP method annotation, as they’re treated as valid JAX-RS endpoints: Renarde endpoint codelens

  • Completion on the Renarde uri and uriabs namespaces lists available Renarde controllers: Renarde uri completion

  • Quick-fix is available to add missing input fields to a {#form} section: Renarde form quickfix

タイプセーフ・メッセージ・バンドルの部分サポート

Quteのタイプセーフメッセージバンドルに部分的に対応しました。あなたのコードで @MessageBundle クラスを定義した場合、Qute テンプレートで自動的にメッセージの自動補完が行われ、メッセージがインレイヒントとしてレンダリングされます:

Message bundle support for Qute templates

プロパティファイルからのメッセージのレンダリングはまだサポートされていません。

バリデーション

Java files

バリデーションは以下の機能で強化された:

  • GraphQL void operations are now allowed in Quarkus 3.1 and higher and the correct placement of GraphQL directives is now checked: GraphQL directives placement validation

  • Quarkus BuildItem subclasses are checked whether they’re final or abstract: BuildItem validation

重症度マッピング

言語サーバーから報告されるMicroprofileとQuteの診断のいくつかを、IntelliJの検査設定にバインドしようとしました。しかし、これはちょっとしたハックなので、いくつかの重大度設定を除いて、検査設定はほとんど無視されます。制限事項については、各検査の説明に記載されています:

Inspection severity mapping

ほとんどの場合だ:

  • スコープ:値は無視される

  • Severity: Errorと(弱い)Warningのみが尊重される。それ以外の値ではエラーは報告されません。

  • エディタでのハイライト:値が無視される

設定を更新するクイックフィックス

特定のエラーに対する検証を無効にするクイックフィックスを導入しました。例えば、偽陽性のエラーによって開発ワークフローにノイズが多すぎる場合に便利です。

javaファイル中の未割り当ての @ConfigProperty プロパティ(すなわち、 application.properties で宣言されていない)、または application.properties で宣言された未知のプロパティ(未使用と思われる)を、クイックフィックスによって検証から除外できるようになりました:

Quick-fix to exclude property from validation

その後、 Preferences | Editor | Inspections | MicroProfile | Java files | Unassigned properties または Preferences | 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のプロジェクトがサポートされました。

  • IntelliJ Ultimateに組み込まれたQuarkusサポートとの混同を避けるため、実行設定の名前が Quarkus Dev Mode に変更されました。

  • Vert.xリアクティブルート、JAX-RS、Renardeエンドポイントが暗黙的に使用されるようになり、Quarkus @BuildStep -注釈付きクラス、 @Observer -注釈付きメソッドも表示されるようになりました。

前を向いて

Quarkusの「開発者の喜び」というマントラは、IDEで過ごす時間にも明らかに当てはまります。過去5ヶ月間のリリースを振り返ると、IntelliJ IDEAでのQuarkus開発エクスペリエンスの進歩にとても興奮しています。

そして、我々はここで止まるつもりはないので、今後数週間のうちにさらなるパフォーマンス向上とエキサイティングな新機能にご期待ください。実は、EAPリリース・チャンネルにアップデートを公開することで、できるだけ早くこれらの新しいビットを入手しやすくする予定です。

最後に、まだの方は、 JetBrainsマーケットプレイスにレビューを追加して ください。あなたのフィードバックが重要です!

バグを見つけたり、素晴らしい新機能のアイデアがある場合は、遠慮なく Githubリポジトリ にアクセスしてチケットを開いてください。