Sur cette page

QQmlSA::ElementPass Class

class QQmlSA::ElementPass

Classe de base pour tous les passages d'analyse statique sur les éléments. En savoir plus...

En-tête : #include <qqmlsa.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
Hérite de : QQmlSA::GenericPass
Statut : Aperçu technologique

Cette classe est en avant-première technologique et est susceptible d'être modifiée.

Fonctions publiques

ElementPass(QQmlSA::PassManager *manager)
virtual void run(const QQmlSA::Element &element) = 0
virtual bool shouldRun(const QQmlSA::Element &element)

Description détaillée

ElementPass est la plus simple des deux phases d’analyse. Elle prend en compte chaque élément d’un fichier. La méthode shouldRun() permet de filtrer les éléments non pertinents, tandis que la méthode run() effectue le travail initial.

Les tâches courantes adaptées à un ElementPass sont les suivantes

  • vérifier que les propriétés d'un élément ne sont pas combinées de manière incohérente
  • valider les valeurs des propriétés (par exemple, s'assurer qu'une propriété ne prend que certaines valeurs d'énumération)
  • vérifier le comportement en fonction du parent d’un élément (par exemple, ne pas utiliser ` Item::width ` lorsque l’élément parent est un ` Layout`).

Comme le montre l’extrait de code ci-dessous, il est recommandé d’effectuer la résolution de type nécessaire dans le constructeur de l’ElementPass et de la mettre en cache dans des membres locaux, ainsi que de mettre en œuvre un filtrage via ` shouldRun()` afin de préserver les performances de l’analyse statique.

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
        }
}

Les ElementPasses ont une visibilité limitée sur la manière dont les propriétés d’un élément sont utilisées. Si vous avez besoin de ces informations, envisagez plutôt d’utiliser un PropertyPass.

Remarque : ElementPass ne prend en compte que les types instanciables. Par conséquent, il ne convient pas pour analyser les types attachés et les singletons. Ceux-ci doivent être gérés via une PropertyPass.

Documentation sur les fonctions membres

ElementPass::ElementPass(QQmlSA::PassManager *manager)

Crée un objet ElementPass et utilise ` manager ` pour faire référence au gestionnaire de passes.

[pure virtual] void ElementPass::run(const QQmlSA::Element &element)

S'exécute si ` shouldRun() ` renvoie ` true`. Effectue le calcul proprement dit du passage sur ` element`. Cette méthode est destinée à être redéfinie. Il n'est pas nécessaire d'appeler la méthode de base.

[virtual] bool ElementPass::shouldRun(const QQmlSA::Element &element)

Détermine si la fonction ` run() ` doit être exécutée sur l'element` donné. Les sous-classes peuvent redéfinir cette méthode afin d'améliorer les performances de l'analyse en filtrant les éléments non pertinents.

L'implémentation par défaut renvoie sans condition ` true`.

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