Qtブログ(日本語)

Qt Creator 14および15におけるQMLコードエディタの不正な警告の対処と機能制限

作成者: Qt Group 日本オフィス|Dec 19, 2024 2:18:58 AM
本稿は「Handling incorrect warnings and a limited functionality in QML Code Editor in Qt Creator 14.0 and 15.0」の抄訳です。
 

最近、Qt Creator 14.0 および 15.0 の QML コードエディタが、初期設定のままでは期待通りに動作しないことが判明しました。現在、QML Language Server の統合が機能しておらず、この問題を公表し、影響を受ける方々への解決策を提供したいと思います。

問題

Qt 6.8 を対象とする Qt プロジェクトを Qt Creator で開くと、ビルドや実行には問題がないにもかかわらず、多くの警告が表示されます。この問題は、Qt Creator を組み込みコードモデルから QML Language Server へ移行する際に発生しました。

原因

Qt Creator 14.0 では、警告、オートコンプリート(コードの自動補完)、ナビゲーション(定義へ移動)などの機能のデフォルトの仕組みとして、QML Language Server を導入しました。この最新の統合機能には多くの利点がありますが、ユーザー定義やカスタム QML モジュールを解決するにはビルドフォルダーの情報に依存します。この情報は、正確なインポートと適切な動作に不可欠です。

当社側の見落としにより、必要なビルドフォルダのデータが QML Language Server に渡されていませんでした。その結果、多くのプロジェクトで不正確な警告が表示され、オートコンプリートやナビゲーションなどの主要な機能が意図したとおりに動作していません。

影響範囲

カスタムまたはユーザー作成の QML モジュールを含むプロジェクトで Qt Creator 14.0 または 15.0 を使用している場合、

  • QML モジュールをインポートできない、またはそのプロパティ、メソッド、または型が未解決であることを示す不正確な警告が表示されることがあります。
  • オートコンプリートやナビゲーションなどの機能が適切に動作しないことがあります。

上記の問題が発生した場合でも、プロジェクトは正しくビルドおよび実行されます。これらの問題に対する恒久的な修正は提供されます。次のセクションでは、今すぐ状況を改善するための回避策について説明します。

回避策

この問題を緩和するには、Qt Creator 16 がリリースされるまでの間、以下の回避策を推奨します。

QT_QML_GENERATE_QMLLS_INI を使用して QML Language Server を設定します

CMake を使用して、QML Language Server に不足しているビルドフォルダ情報を手動で提供します。 これを行うには、以下の手順に従います。

  1. プロジェクト > ビルド > CMake > 追加
  1. QT_QML_GENERATE_QMLLS_INI変数を作成し、ON に設定し、Run CMake を押します
  1. 言語サーバーを再起動します

QT_QML_GENERATE_QMLLS_INI は、Boot2Qt プロジェクトではまだサポートされていません。

埋め込みコードモデルに戻す

Qt Creatorの設定でQML Language Serverを無効にすると、埋め込みコードモデルを有効にすることができます。これにより、警告、オートコンプリート、ナビゲーション、その他の機能については以前のシステムを使用できますが、その場合「本当の警告」の一部が表示されないという欠点があります。

今後の対策

今後リリース予定の Qt Creator 16.0 では、QML Language Server の統合が再実装され、必要なビルドフォルダ情報が正しく渡されるようになります。これにより、機能が回復し、現在の問題が解決されます。

また、このような見落としを可能な限り早期に特定し、将来は回避できるように、社内プロセスを見直しています。これにより、ユーザーである皆さまに影響が及ばないようにします。

技術的な詳細

Qt Creator 14.0 および 15.0 の QML Language Server 管理は、すべてのプロジェクトで同じ qmllsインスタンスを共有しています。 qmlls はQML ファイルが開かれるとすぐに起動し、Qt Creator が終了するまで実行され続けます。各プロジェクトでqmllsを実行する際に、ビルドフォルダを含む独自のコマンドラインパラメータを設定する必要がある場合、これは非常に非実用的です。そのため、実際の修正を行う前に、より深い変更が必要でした。新しいQML Language Server管理コードの現在の開発状況については、QTCREATORBUG-31897を参照してください。このコードには、ビルドフォルダをqmllsに渡す機能が含まれています。

ご辛抱いただきありがとうございます

この問題によりご不便とご迷惑をおかけしたことをお詫び申し上げます。Qt Creatorの改善と、皆さまにふさわしい体験を提供できるよう努めてまいりますので、皆さまからのフィードバックを大変重要視し、ご理解に感謝いたします。

ご質問やサポートが必要な場合は、ご遠慮なくご連絡ください。