QQmlSA::ElementPass Class
class QQmlSA::ElementPassBasisklasse für alle statischen Analyse-Durchläufe an Elementen. Mehr...
| Header: | #include <qqmlsa.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS QmlCompiler) target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler) |
| Erbt von: | QQmlSA::GenericPass |
| Status: | Technologievorschau |
Diese Klasse befindet sich in der Technologievorschau und kann sich noch ändern.
Öffentliche Funktionen
| ElementPass(QQmlSA::PassManager *manager) | |
| virtual void | run(const QQmlSA::Element &element) = 0 |
| virtual bool | shouldRun(const QQmlSA::Element &element) |
Ausführliche Beschreibung
ElementPass ist der einfachere der beiden Analyse-Durchläufe. Er berücksichtigt jedes Element in einer Datei. Mit der Methode „ shouldRun()“ können irrelevante Elemente herausgefiltert werden, und die Methode „ run()“ übernimmt die Vorarbeit.
Typische Aufgaben, die sich für einen ElementPass eignen, sind
- die Überprüfung, ob Eigenschaften eines Elements nicht auf unsinnige Weise kombiniert sind
- Validierung von Eigenschaftswerten (z. B. dass eine Eigenschaft nur bestimmte Enum-Werte annimmt)
- Überprüfung des vom übergeordneten Element abhängigen Verhaltens (z. B. kein Einsatz von ` Item::width `, wenn das übergeordnete Element ein `
Layout` ist).
Wie im folgenden Codeausschnitt gezeigt, empfiehlt es sich, die erforderliche Typauflösung im Konstruktor des „ElementPass“ durchzuführen und in lokalen Variablen zwischenzuspeichern sowie eine Filterung über „ shouldRun()“ zu implementieren, um die Leistungsfähigkeit der statischen Analyse zu gewährleisten.
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 nur begrenzte Einblicke in die Verwendung der Eigenschaften eines Elements. Wenn Sie diese Informationen benötigen, sollten Sie stattdessen die Verwendung eines „ PropertyPass “ in Betracht ziehen.
Hinweis: ElementPass berücksichtigt ausschließlich instanziierbare Typen. Daher eignet er sich nicht zur Analyse von angehängten Typen und Singletons. Diese müssen über einen „ PropertyPass “ behandelt werden.
Dokumentation zu Mitgliedsfunktionen
ElementPass::ElementPass(QQmlSA::PassManager *manager)
Erstellt ein „ElementPass“-Objekt und verwendet „ manager “, um auf den Pass-Manager zu verweisen.
[pure virtual] void ElementPass::run(const QQmlSA::Element &element)
Wird ausgeführt, wenn „ shouldRun() “ den Wert „ true “ zurückgibt. Führt die eigentliche Berechnung des Durchgangs auf „ element “ durch. Diese Methode ist zum Überschreiben vorgesehen. Ein Aufruf der Basismethode ist nicht erforderlich.
[virtual] bool ElementPass::shouldRun(const QQmlSA::Element &element)
Legt fest, ob die Funktion „ run() “ für die angegebene „ element “ ausgeführt werden soll. Unterklassen können diese Methode überschreiben, um die Leistung der Analyse zu verbessern, indem sie irrelevante Elemente herausfiltern.
Die Standardimplementierung gibt bedingungslos ` true` zurück.
© 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.