PassManager Class

class QQmlSA::PassManager

静的解析パスで要素とその子を解析することができます。さらに...

Header: #include <PassManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
Status: Technical Preview

パブリック関数

void analyze(const QQmlSA::Element &root)
std::unordered_map<quint32, QQmlSA::BindingInfo> bindingsByLocation() const
std::vector<std::shared_ptr<QQmlSA::ElementPass>> elementPasses() const
bool hasImportedModule(QAnyStringView module) const
bool isCategoryEnabled(QQmlSA::LoggerWarningId category) const
std::multimap<QString, QQmlSA::PropertyPassInfo> propertyPasses() const
void registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass)
bool registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true)

詳細説明

メンバー関数ドキュメント

void PassManager::analyze(const QQmlSA::Element &root)

root とそのすべての子要素を通過させる。

std::unordered_map<quint32, QQmlSA::BindingInfo> PassManager::bindingsByLocation() const

バインディングをソースの位置で返します。

std::vector<std::shared_ptr<QQmlSA::ElementPass>> PassManager::elementPasses() const

要素パスのリストを返す。

bool PassManager::hasImportedModule(QAnyStringView module) const

module というモジュールが解析対象のQMLにインポートされていればtrue を、そうでなければfalse を返します。

これは、特定のモジュールに特化したパスの登録をスキップするために使用できます。

if (passManager->hasImportedModule("QtPositioning"))
    passManager->registerElementPass(
       std::make_unique<PositioningPass>(passManager)
    );

registerPropertyPass() およびregisterElementPass()も参照して ください。

bool PassManager::isCategoryEnabled(QQmlSA::LoggerWarningId category) const

category の警告が有効な場合はtrue を、そうでない場合はfalse を返します。

std::multimap<QString, QQmlSA::PropertyPassInfo> PassManager::propertyPasses() const

プロパティ・パスのリストを返します。

void PassManager::registerElementPass(std::unique_ptr<QQmlSA::ElementPass> pass)

すべての要素に対して実行される静的解析pass を登録します。

bool PassManager::registerPropertyPass(std::shared_ptr<QQmlSA::PropertyPass> pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true)

プロパティの静的解析パスを登録します。pass は、moduleNametypeNamepropertyName にマッチするすべてのプロパティに対して実行されます。

propertyName を省略すると、typeNamemoduleName にマッチするすべてのプロパティに対してこのパスが登録されます。

allowInheritancetrue に設定することは、型に対するフィルタリングがtypeName から派生する型も受け付けることを意味します。

pass を として渡すと、複数の要素で同じパスを再利用できます:std::shared_ptr

auto titleValiadorPass = std::make_shared<TitleValidatorPass>(manager);
manager->registerPropertyPass(titleValidatorPass,
                              "QtQuick", "Window", "title");
manager->registerPropertyPass(titleValidatorPass,
                              "QtQuick.Controls", "Dialog", "title");

注意: あまりに多くの項目に対して分析パスを実行すると、コストが高くなる可能性があります。このため、一般的には、moduleNametypeNamepropertyName を使用して、パスのプロパティのセットを絞り込むとよいでしょう。

パスの追加に成功した場合はtrue を、失敗した場合はfalse を返します。moduleNametypeName で指定されたElement が存在しない場合、パスの追加は失敗します。

PropertyPassも参照してください

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。