Auf dieser Seite

QQmlSA::PassManager Class

class QQmlSA::PassManager

Kann ein Element und dessen untergeordnete Elemente im Rahmen statischer Analysen untersuchen. Mehr...

Kopfzeile: #include <qqmlsa.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
Status: Technologievorschau

Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.

Öffentliche Funktionen

void analyze(const QQmlSA::Element &root)
std::unordered_map<quint32, QQmlSA::Binding> bindingsByLocation() const
bool hasImportedModule(QAnyStringView module) const
bool isCategoryEnabled(QQmlSA::LoggerWarningId category) 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)

Ausführliche Beschreibung

Dokumentation der Mitgliedsfunktionen

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

Führt die Elemente durch, die root und alle seine untergeordneten Elemente durchlaufen.

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

Gibt die Bindungen anhand ihres Ursprungsortes zurück.

bool PassManager::hasImportedModule(QAnyStringView module) const

Gibt „ true “ zurück, wenn das Modul mit dem Namen „ 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 Warnungen zu „ category “ aktiviert sind, andernfalls „ false “.

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

Registriert ein statisches Analyse- pass, das auf alle Elemente angewendet werden soll.

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

Registriert einen statischen Analyse-Durchlauf für Eigenschaften. Der „ pass “ wird für jede Eigenschaft ausgeführt, die den Mustern „ moduleName “, „ typeName “ und „ propertyName “ entspricht.

Wird der „ propertyName “ weggelassen, wird dieser Durchlauf für alle Eigenschaften registriert, die den Mustern „ typeName “ und „ moduleName “ entsprechen.

Wird „ allowInheritance “ auf „ true “ gesetzt, bedeutet dies, dass die Filterung nach dem Typ 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: Das Ausführen von Analyse-Pässen auf zu vielen Elementen kann rechenintensiv sein. Daher ist es im Allgemeinen ratsam, die Menge der Eigenschaften eines Passes mithilfe von ` moduleName`, ` typeName ` und ` propertyName` einzuschränken.

Gibt „ true “ zurück, wenn der Durchlauf erfolgreich hinzugefügt wurde, andernfalls „ false “. Das Hinzufügen eines Durchlaufs schlägt fehl, wenn die durch „ moduleName “ und „ typeName “ angegebenen „ Element “ nicht existieren.

Siehe auch PropertyPass.

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