ElementPass Class
class QQmlSA::ElementPassBasisklasse für alle statischen Analyseübergänge auf Elemente. Mehr...
Kopfzeile: | #include <ElementPass> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS QmlCompiler) target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler) |
Vererbt: | QQmlSA::GenericPass |
Status: | Technische Vorschau |
Öffentliche Funktionen
virtual void | run(const QQmlSA::Element &element) = 0 |
virtual bool | shouldRun(const QQmlSA::Element &element) |
Detaillierte Beschreibung
ElementPass ist der einfachere der beiden Analysedurchläufe. Es wird jedes Element in einer Datei betrachtet. Die Methode shouldRun() kann verwendet werden, um irrelevante Elemente herauszufiltern, und die Methode run() führt die erste Arbeit aus.
Allgemeine Aufgaben, die sich für einen ElementPass eignen, sind
- Überprüfung, dass die Eigenschaften eines Elements nicht auf unsinnige Weise kombiniert werden
- Validierung von Eigenschaftswerten (z. B. dass eine Eigenschaft nur bestimmte Enum-Werte annimmt)
- Überprüfung des Verhaltens in Abhängigkeit vom übergeordneten Element (z. B. keine Verwendung von Item::width, wenn das übergeordnete Element ein
Layout
ist).
Wie im folgenden Ausschnitt gezeigt, ist es empfehlenswert, die notwendige Typauflösung im Konstruktor des ElementPasses durchzuführen und sie in lokalen Membern zwischenzuspeichern, sowie eine Filterung über shouldRun() zu implementieren, um die statische Analyse performant zu halten.
using namespace QQmlSA; class MyElementPass : public ElementPass { Element myType; public: MyElementPass(QQmlSA::PassManager *manager) : myType(resolveType("MyModule", "MyType")) {} bool shouldRun(const Element &element) override { return element.inherits(myType); } void run(const Element &element) override { // actual pass logic } }
ElementPasses haben einen begrenzten Einblick in die Verwendung der Eigenschaften eines Elements. Wenn Sie diese Informationen benötigen, sollten Sie stattdessen eine PropertyPass verwenden.
Hinweis: ElementPass wird immer nur instanzierbare Typen berücksichtigen. Daher ist es nicht geeignet, um angehängte Typen und Singletons zu analysieren. Diese müssen über eine PropertyPass behandelt werden.
Dokumentation der Mitgliedsfunktionen
[pure virtual]
void ElementPass::run(const QQmlSA::Element &element)
Wird ausgeführt, wenn shouldRun()
true
zurückgibt. Führt die eigentliche Berechnung des Passes auf element durch. Diese Methode ist dafür gedacht, überschrieben zu werden. Ein Aufruf der Basismethode ist nicht erforderlich.
[virtual]
bool ElementPass::shouldRun(const QQmlSA::Element &element)
Steuert, ob die Funktion run()
auf der angegebenen element ausgeführt werden soll. Unterklassen können diese Methode außer Kraft setzen, um die Leistung der Analyse zu verbessern, indem nicht relevante Elemente herausgefiltert werden.
Die Standardimplementierung gibt bedingungslos true
zurück.
© 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.