Qt QML Compiler

Qt QML Compiler モジュールには、Qt Quick コンパイラqmllint などの QML ツールが必要とする共有機能が含まれています。また、QQmlSA フレームワークも提供しており、ツールの組み込み解析機能を拡張するために使用することができます。

モジュールの使用

Qt モジュールの C++ API を使用するには、モジュールライブラリを直接リンクするか、他の依存関係を通 してリンクする必要があります。CMakeや qmakeなど、いくつかのビルドツールはこのための専用サポートを持っています。

CMake でのビルド

find_package() コマンドを使って、Qt6 パッケージの中から必要なモジュール・コンポーネントを探します:

find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)

詳細については、CMakeによるビルドの概要を参照してください。

qmakeでのビルド

モジュールをqmakeでビルドするように設定するには、プロジェクトの.proファイルにQT 変数の値としてモジュールを追加します:

QT += QmlCompiler

QQmlSAフレームワークを使う

QQmlSAフレームワークの使用Qt QML Compiler モジュールは、QMLコードの静的解析ツールQQmlSA フレームワークを提供します。これらのツールは構文の妥当性を保証したり、QMLのアンチパターンを警告したりするのに役立ちます。QMLプログラムに静的解析を追加するには、プラグインを記述します。プラグインは、QMLコードの要素やプロパティに対して解析パスを実行します。パスはPassManagerに登録することができ、PassManagerはパスを保持し、 要素とその子要素を解析するために呼び出すことができます。パスとは、要素やプロパティに対して評価される特定のルールや条件をチェックするものです。条件が満たされた場合、パスはコード内の特定された問題をユーザーに警告し、修正を提案することもできます。パスと呼ばれるのは、要素やプロパティに対して実行される分析が、パスを連続して実行することによって行われるからです。各パスは、特定の問題を1つだけ特定する責任を負います。パスの集合を組み合わせることで、より複雑な分析を行うことができます。要素パスは、shouldRun()run() という2つの主要コンポーネントによって定義されます。解析を実行する際、パス・マネージャーはルート要素の子要素をトラバースしながら、遭遇したすべての要素に対してパスを実行します。各要素について、その要素で評価されたshouldRun()true を返すと、run() が実行されます。プロパティへのパスは、プロパティがバインドされたとき、読み込まれたとき、書き込まれたときの3つの異なるイベントでトリガーされます。これらは、それぞれonBinding()onRead()onWrite() 関数をオーバーライドすることで実装できます。コードが大きくなるにつれて、要素とプロパティの数も増えていきます。それらすべてに対して静的解析パスを実行すると、コストが高くなる可能性があります。そのため、解析する要素やプロパティを決定する際には、粒度を細かくするのがよいでしょう。要素の場合、shouldRun() は、実際の計算を実行するrun() を実行すべきかどうかを判断するための、安価なチェックであることを意図しています。プロパティについては、マネージャにパスを登録する際に選択されます。registerPropertyPass() 関数は、引数としてmoduleNametypeNamepropertyName の文字列を取ります。これらは、登録されたパスによって影響を受けるプロパティのセットを絞り込むために使用されます。

QML Static Analysis Tutorialでは、QQmlSA フレームワークを使用して、カスタムqmllintパスを作成する方法を紹介しています。

参照

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.