Qt Qml Compilateur
Le module « Qt Qml Compiler » contient les fonctionnalités partagées requises par les outils QML tels que Qt Quick Compiler et qmllint. Il fournit également le framework « QQmlSA », qui peut être utilisé pour étendre les capacités d’analyse intégrées de ces outils.
Utilisation du module
Pour utiliser l’API C++ d’un module Qt, il faut lier le code à la bibliothèque du module, soit directement, soit via d’autres dépendances. Plusieurs outils de compilation prennent cela en charge, notamment CMake et qmake.
Compilation avec CMake
Utilisez la commande ` find_package() ` pour localiser le composant de module requis dans le paquet ` Qt6 ` :
find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)Pour plus de détails, consultez la présentation « Compilation avec CMake ».
Compilation avec qmake
Pour configurer le module en vue d’une compilation avec qmake, ajoutez le module en tant que valeur de la variable ` QT ` dans le fichier `.pro` du projet :
QT += QmlCompilerUtilisation du framework QQmlSA
Le module « Qt Qml Compiler » propose le framework « QQmlSA », qui fournit des outils d’analyse statique du code QML. Ces outils permettent de garantir la validité syntaxique et de signaler les anti-modèles QML.
L'ajout d'une analyse statique à un programme QML s'effectue en écrivant des plugins. Ceux-ci exécutent une série de passes d'analyse sur les éléments et les propriétés du code QML. Les passes peuvent être enregistrées auprès d'un PassManager qui les gère et peut être appelé pour analyser un élément et ses enfants. Un passage est une vérification d’une règle ou d’une condition donnée, évaluée sur des éléments ou des propriétés. Si la condition est remplie, le passage peut avertir l’utilisateur d’un problème identifié dans le code et éventuellement même suggérer une correction. On parle de « passage » car l’analyse effectuée sur les éléments et les propriétés se fait en exécutant successivement une série de passages sur ceux-ci. Chaque « pass » doit être chargé d’identifier un seul problème spécifique. La combinaison d’un ensemble de « passes » permet d’effectuer des analyses plus complexes et, ensemble, elles forment un plugin. Les « passes » d’élément sont définies par deux composants principaux, à savoir shouldRun() et run(). Lors de l’analyse, le gestionnaire de « passes » exécutera la « pass » sur chaque élément qu’il rencontre en parcourant les enfants de l’élément racine. Pour chaque élément, si l’expression shouldRun() évaluée sur cet élément renvoie true, alors le passage run() est exécuté sur celui-ci.
Les passes sur les propriétés se déclenchent lors de trois événements différents, à savoir lorsque la propriété est liée, lorsqu’elle est lue et lorsqu’elle est écrite. Celles-ci peuvent être implémentées en redéfinissant respectivement les fonctions ` onBinding()`, ` onRead() ` et ` onWrite() `.
À mesure que le code s'étoffe, le nombre d'éléments et de propriétés augmente également. Effectuer les passes d'analyse statique sur l'ensemble de ces éléments peut s'avérer coûteux en ressources. C'est pourquoi il est recommandé de faire preuve de précision lors du choix des éléments et des propriétés à analyser. Pour les éléments, la fonction shouldRun() est conçue comme une vérification peu coûteuse permettant de déterminer si la fonction run(), qui effectue le calcul proprement dit, doit être exécutée. Pour les propriétés, la sélection s’effectue lors de l’enregistrement des passes auprès du gestionnaire. La fonction ` registerPropertyPass() ` prend comme arguments les chaînes ` moduleName`, ` typeName ` et ` propertyName `. Celles-ci servent à filtrer l’ensemble des propriétés concernées par la passe enregistrée.
Exemples
Le tutoriel d’analyse statique QML montre comment utiliser le framework QQmlSA pour créer un passage qmllint personnalisé.
Référence
- Qt Qml Compiler C++ Classes - l'API C++ fournie par le module QmlCompiler
- Outils QML utilisant les capacités d’analyse statique
Licences
Qt Qml Le compilateur est disponible sous licence commerciale auprès de The Qt Company. Il est également disponible sous licence GNU General Public License, version 3, avec l'exception Qt GPL 1.0. Pour plus d'informations, consultez la page Licences Qt.
© 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.