PassManager Class

class QQmlSA::PassManager

Kann ein Element und seine Kinder mit statischen Analysedurchläufen analysieren. Mehr...

Kopfzeile: #include <PassManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
Status: Technische Vorschau

Öffentliche Funktionen

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)

Detaillierte Beschreibung

Dokumentation der Mitgliedsfunktionen

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

Führt das Element über root und alle seine Kinder durch.

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

Gibt Bindungen nach ihrem Quellort zurück.

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

Gibt die Liste der Elementübergänge zurück.

bool PassManager::hasImportedModule(QAnyStringView module) const

Gibt true zurück, wenn das Modul namens module von der zu analysierenden QML importiert wurde, andernfalls false.

Dies kann verwendet werden, um die Registrierung eines Passes zu überspringen, der für ein bestimmtes Modul spezifisch ist.

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

Siehe auch registerPropertyPass() und registerElementPass().

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

Gibt true zurück, wenn die Warnungen von category aktiviert sind, andernfalls false.

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

Gibt die Liste der Eigenschaftsübergänge zurück.

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

Registriert eine statische Analyse pass, die auf allen Elementen ausgeführt werden soll.

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

Registriert einen statischen Analysedurchlauf für Eigenschaften. pass wird für jede Eigenschaft ausgeführt, die mit moduleName, typeName und propertyName übereinstimmt.

Wenn Sie propertyName weglassen, wird dieser Durchlauf für alle Eigenschaften registriert, die mit typeName und moduleName übereinstimmen.

Das Setzen von allowInheritance auf true bedeutet, dass die Filterung des Typs auch Typen akzeptiert, die von typeName abgeleitet sind.

pass wird als std::shared_ptr übergeben, um die Wiederverwendung desselben Durchlaufs für mehrere Elemente zu ermöglichen:

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

Hinweis: Die Ausführung von Analysedurchläufen für zu viele Elemente kann teuer werden. Aus diesem Grund ist es im Allgemeinen sinnvoll, die Menge der Eigenschaften eines Durchlaufs mit Hilfe von moduleName, typeName und propertyName einzugrenzen.

Gibt true zurück, wenn der Pass erfolgreich hinzugefügt wurde, andernfalls false. Das Hinzufügen eines Durchgangs schlägt fehl, wenn die durch moduleName und typeName angegebene Element nicht existiert.

Siehe auch PropertyPass.

© 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.