qmllint
qmllint est un outil fourni avec Qt, qui vérifie la validité syntaxique des fichiers QML. Vous pouvez intégrer qmllint dans votre système de construction pour en faciliter l'utilisation. Il vous avertit également de l'existence de certains anti-modèles QML. Voir {Configuration des avertissements qmllint} pour savoir comment désactiver un type d'avertissement spécifique.
Note : Lorsque vous utilisez un IDE, tel que Qt Creator, vous n'avez pas besoin d'exécuter qmllint manuellement. L'IDE utilise QML Language ServerL'IDE utilise qmllint, qui fournit en temps réel les résultats de linting et les diagnostics au fur et à mesure que vous tapez.
Par défaut, certains problèmes donneront lieu à des avertissements qui seront imprimés. S'il y a plus d'avertissements qu'une limite qui peut être configurée avec --max-warnings, le code de sortie sera différent de zéro. Les problèmes mineurs (tels que les importations inutilisées) ne sont que des messages d'information par défaut et n'affecteront jamais le code de sortie. qmllint est très configurable et permet de désactiver les avertissements ou de modifier la façon dont ils sont traités.
qmllint émet des avertissements à propos de :
- Accès non qualifié aux propriétés
- L'utilisation de gestionnaires de signaux sans signal correspondant
- L'utilisation d'instructions "with" en QML
- Problèmes liés à la compilation du code QML
- Importations non utilisées
- Composants et propriétés obsolètes
- Et bien d'autres choses encore
Voir Avertissements et erreurs de QML Lint pour savoir comment corriger les avertissements et les erreurs de qmllint.
Note : Pour fonctionner correctement, qmllint a besoin d'informations sur les types. Ces informations sont fournies par les modules QML dans les chemins d'importation. Le répertoire actuel, ainsi que les chemins d'importation pour les types intégrés de Qt, sont utilisés par défaut comme chemins d'importation. Pour ajouter d'autres chemins d'importation qui ne sont pas inclus par défaut, ajoutez-les via le drapeau -I.
Pour obtenir une vue d'ensemble et une explication de toutes les options de ligne de commande disponibles, exécutez qmllint --help.
Avertissements du compilateur
qmllint peut vous avertir de la présence de code qui ne peut pas être compilé par qmlsc.
Ces avertissements ne sont pas activés par défaut. Pour les activer, configurez qmllint pour qu'il utilise la catégorie des avertissements du compilateur.
Utiliser qmllint avec CMake
Pour les projets utilisant l'API CMake qt_add_qml_module() pour créer des modules QML, des cibles de commodité telles que all_qmllint sont créées automatiquement. Celles-ci exécutent qmllint sur tous les fichiers QML d'un module spécifique ou du projet.
Marquer les composants et les propriétés comme étant obsolètes
qmllint vous permet de marquer les propriétés et les composants comme obsolètes :
@Deprecated { reason: "Use NewCustomText instead" }
Text {
@Deprecated { reason: "Use newProperty instead" }
property int oldProperty
property int newProperty
Component.onCompleted: console.log(oldProperty); // Warning: XY.qml:8:40: Property "oldProperty" is deprecated (Reason: Use newProperty instead)
}Les avertissements de dépréciation pour les composants seront affichés à chaque fois que le composant est créé.
Désactivation des avertissements en ligne
Vous pouvez à tout moment désactiver temporairement les avertissements dans un fichier en utilisant // qmllint disable.
Vous pouvez le faire à la fin d'une ligne lorsqu'une seule ligne produit des avertissements :
Item {
property string foo
Item {
property string bar: foo // qmllint disable unqualified
}
}Vous pouvez également désactiver les commentaires pour un bloc de lignes en plaçant le commentaire dans une ligne contenant uniquement // qmllint disable, en terminant le bloc par // qmllint enable:
Item {
property string foo
Item {
// qmllint disable unqualified
property string bar: foo
property string bar2: foo
// qmllint enable unqualified
}
}qmllint interprète tous les commentaires d'une seule ligne commençant par qmllint comme des directives. Vous ne pouvez donc pas commencer un commentaire de cette manière, à moins que vous ne souhaitiez activer ou désactiver les avertissements.
Note : Comme dans les exemples ci-dessus, il est préférable de spécifier explicitement l'avertissement ou une liste d'avertissements que vous souhaitez désactiver plutôt que de désactiver tous les avertissements. Cela peut être fait en listant simplement les catégories d'avertissements après qmllint disable (les noms sont les mêmes que les options listées dans --help).
Configuration des avertissements de qmllint
Vous pouvez configurer les avertissements que qmllint émet et leur niveau de gravité. Ces niveaux peuvent être info, {avertissement}, error, ou disable. Vous pouvez personnaliser les avertissements en utilisant le fichier de configuration .qmllint.ini ou en passant des options de ligne de commande à qmllint. Les options de ligne de commande remplacent la valeur par défaut et le fichier de configuration.
Pour personnaliser le niveau d'une catégorie d'avertissement via la ligne de commande, définissez l'option de ligne de commande correspondante au niveau souhaité.
Par exemple, pour désactiver les avertissements concernant les dépréciations, appelez qmllint avec l'option --deprecated=disable. Et pour transformer les importations inutilisées en erreur, passez l'option --unused-imports=error.
Il est possible de personnaliser les avertissements de manière plus permanente en modifiant le fichier de configuration. Voir la section suivante sur les fichiers de configuration pour plus de détails.
Paramètres
En plus de passer des options de ligne de commande, vous pouvez également configurer qmllint via un fichier de configuration. La ligne de commande --write-defaults en génère un pour vous.
Les fichiers de configuration sont nommés .qmllint.ini et ressemblent à ceci :
[General] DisableDefaultImports=false MaxWarnings=-1 [Warnings] AccessSingletonViaObject=warning AliasCycle=warning AssignmentInCondition=warning AttachedPropertyReuse=disable BadSignalHandlerParameters=warning Comma=warning CompilerWarnings=disable ComponentChildrenCount=warning ConfusingExpressionStatement=warning ConfusingMinuses=warning ConfusingPluses=warning ContextProperties=warning Deprecated=warning DuplicateEnumEntries=warning DuplicateImport=warning DuplicateInlineComponent=warning DuplicatePropertyBinding=warning DuplicatedName=warning EnumEntryMatchesEnum=warning EnumsAreNotTypes=warning EqualityTypeCoercion=warning Eval=warning FunctionUsedBeforeDeclaration=disable ImportFailure=warning IncompatibleType=warning InheritanceCycle=warning InvalidLintDirective=warning LintPluginWarnings=disable LiteralConstructor=warning MissingEnumEntry=warning MissingProperty=warning MissingType=warning MultilineStrings=info NonListProperty=warning NonRootEnum=warning PreferNonVarProperties=warning PrefixedImportType=warning PropertyAliasCycles=warning QtDesignStudio.FunctionsNotSupportedInQmlUi=warning QtDesignStudio.ImperativeCodeNotEditableInVisualDesigner=warning QtDesignStudio.InvalidIdeInVisualDesigner=warning QtDesignStudio.ReferenceToParentItemNotSupportedByVisualDesigner=warning QtDesignStudio.UnsupportedRootTypeInQmlUi=warning QtDesignStudio.UnsupportedTypeInQmlUi=warning Quick.Anchors=warning Quick.AttachedPropertyReuse=disable Quick.AttachedPropertyType=warning Quick.Color=warning Quick.ControlsAttachedPropertyReuse=disable Quick.ControlsNativeCustomize=warning Quick.LayoutsPositioning=warning Quick.PropertyChangesParsed=warning Quick.StateNoChildItem=warning Quick.UnexpectedVarType=warning ReadOnlyProperty=warning RedundantOptionalChaining=warning RequiredProperty=warning RestrictedType=warning StalePropertyRead=warning TopLevelComponent=warning TranslationFunctionMismatch=warning UncreatableType=warning UnintentionalEmptyBlock=warning UnqualifiedAccess=warning UnreachableCode=warning UnresolvedAlias=warning UnresolvedType=warning UnterminatedCase=warning UnusedImports=info UseProperFunction=warning VarUsedBeforeDeclaration=warning Void=disable WithStatement=warning
Les niveaux d'avertissement peuvent être définis sur info, warning, error, ou disable comme pour les options de la ligne de commande.
qmllint recherchera automatiquement un fichier de configuration à l'emplacement du fichier qml en cours d'analyse. Il recherche également ce fichier dans tous les répertoires parents et applique automatiquement les paramètres qu'il contient. Vous pouvez désactiver ce comportement en utilisant --ignore-settings. Vous pouvez toujours remplacer ces valeurs par défaut en spécifiant des paramètres de ligne de commande qui ont la priorité sur les niveaux d'avertissement dans les paramètres.
Paramètres des propriétés du contexte
Les propriétés contextuelles peuvent être définies ou ignorées par leur nom dans leur propre fichier de configuration. Les paramètres des propriétés contextuelles permettent une approche plus fine de la désactivation des avertissements d'accès non qualifié pour les utilisations des propriétés contextuelles, alors que .qmllint.ini permet uniquement de désactiver tous les avertissements d'accès non qualifié, y compris potentiellement ceux qui ne sont pas liés aux propriétés contextuelles.
Les paramètres des propriétés de contexte sont nommés .contextProperties.ini et doivent être situés dans le dossier source de votre projet. Ils ressemblent à ceci :
[General] disableUnqualifiedAccess = "myContextProperty1,myContextProperty2" warnOnUsage = "myContextProperty3,myContextProperty4,myContextProperty5" disableHeuristic = false
Pour désactiver les avertissements de qmllint concernant l'accès non qualifié à un nom de propriété de contexte, ajoutez le nom de la propriété de contexte à disableUnqualifiedAccess. Séparez les noms de propriétés de contexte multiples par une virgule.
Pour avertir de l'utilisation d'une propriété de contexte, ajoutez le nom de la propriété de contexte à warnOnUsage. Séparez les noms de plusieurs propriétés de contexte par une virgule.
Pour contrôler l'heuristique qmllint, définissez disableHeuristic comme true ou false.
Écriture de scripts
qmllint peut écrire ou produire du JSON via l'option --json <file> qui renverra du JSON valide avec les messages d'avertissement, l'emplacement du fichier et de la ligne des avertissements, et leur niveau de gravité. Utilisez le nom de fichier spécial '-' pour écrire sur stdout au lieu d'un fichier. Ceci peut être utilisé pour intégrer plus facilement qmllint dans vos hooks pre-commit ou vos tests CI.
Voir également Fichiers de description de type et Qt Quick Outils et utilitaires.
© 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.