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()
関数は、引数としてmoduleName
、typeName
、propertyName
の文字列を取ります。これらは、登録されたパスによって影響を受けるプロパティのセットを絞り込むために使用されます。
例
QML Static Analysis Tutorialでは、QQmlSA
フレームワークを使用して、カスタムqmllintパスを作成する方法を紹介しています。
参照
- Qt QML Compiler C++ Classes- QmlCompiler モジュールが提供する C++ API
- 静的解析機能を使用した QML ツーリング
© 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.