qmllint

qmllint ist ein mit Qt ausgeliefertes Werkzeug, das die syntaktische Gültigkeit von QML-Dateien überprüft. Es warnt auch vor einigen QML-Anti-Mustern. Wenn Sie eine bestimmte Art von Warnung deaktivieren möchten, können Sie das entsprechende Flag dafür finden, indem Sie --help auf der Kommandozeile übergeben.

Standardmäßig führen einige Probleme zu Warnungen, die gedruckt werden. Wenn es mehr Warnungen als die mit --max-warnings konfigurierbare Grenze gibt, wird der Exit-Code ungleich Null sein. Geringfügige Probleme (wie z.B. unbenutzte Importe) sind jedoch standardmäßig nur Informationsmeldungen und haben keinen Einfluss auf den Exit-Code. qmllint ist sehr konfigurierbar und erlaubt es, Warnungen zu deaktivieren oder deren Behandlung zu ändern. Der Benutzer kann jedes Problem in eine Warnung oder eine Informationsmeldung umwandeln oder sie ganz abschalten.

qmllint warnt vor:

  • Unqualifizierte Zugriffe auf Eigenschaften
  • Verwendung von Signalhandlern ohne ein passendes Signal
  • Verwendung von with-Anweisungen in QML
  • Probleme im Zusammenhang mit der Kompilierung von QML-Code
  • Unbenutzte Importe
  • Veraltete Komponenten und Eigenschaften
  • Und viele andere Dinge

Siehe QML Lint Warnungen und Fehler, um qmllint Warnungen und Fehler zu beheben.

Hinweis: Damit qmllint richtig arbeiten kann, benötigt es Typinformationen. Diese Informationen werden von QML-Modulen in den Importpfaden bereitgestellt. Das aktuelle Verzeichnis sowie die Importpfade für die in Qt eingebauten Typen werden standardmäßig als Importpfade verwendet. Um weitere Importpfade hinzuzufügen, die nicht in der Vorgabe enthalten sind, fügen Sie diese mit dem -I Flag hinzu.

Um eine Übersicht und Erklärung aller verfügbaren Kommandozeilenoptionen zu erhalten, führen Sie qmllint --help aus.

Compiler-Warnungen

qmllint kann Sie vor Code warnen, der von qmlsc nicht kompiliert werden kann.

Diese Warnungen sind standardmäßig nicht aktiviert. Um sie zu aktivieren, geben Sie --compiler warning an oder passen Sie Ihre Einstellungsdatei entsprechend an.

Markieren von Komponenten und Eigenschaften als veraltet

qmllint erlaubt es Ihnen, sowohl Eigenschaften als auch Komponenten als veraltet zu markieren:

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

Die Warnungen für veraltete Komponenten werden jedes Mal angezeigt, wenn die Komponente erstellt wird.

Deaktivieren von Warnungen inline

Sie können jederzeit Warnungen in einer Datei mit // qmllint disable vorübergehend deaktivieren.

Sie können dies am Ende einer Zeile tun, wenn eine einzelne Zeile Warnungen erzeugt:

Item {
    property string foo
    Item {
        property string bar: foo // qmllint disable unqualified
    }
}

Alternativ können Sie Kommentare für einen Zeilenblock deaktivieren, indem Sie den Kommentar in eine Zeile setzen, die nur // qmllint disable enthält, und den Block mit // qmllint enable beenden:

Item {
    property string foo
    Item {
        // qmllint disable unqualified
        property string bar: foo
        property string bar2: foo
        // qmllint enable unqualified
    }
}

qmllint interpretiert alle einzeiligen Kommentare, die mit qmllint beginnen, als Direktiven. Sie dürfen also einen Kommentar nicht auf diese Weise beginnen, es sei denn, Sie möchten Warnungen aktivieren oder deaktivieren.

Hinweis: Wie in den obigen Beispielen ist es besser, die Warnung oder eine Liste von Warnungen, die Sie deaktivieren wollen, explizit anzugeben, anstatt alle Warnungen zu deaktivieren. Dazu können Sie einfach die Warnungskategorien nach qmllint disable auflisten (die Namen sind dieselben wie die in --help aufgeführten Optionen).

Einstellungen

Zusätzlich zur Übergabe von Kommandozeilenoptionen können Sie qmllint auch über eine Einstellungsdatei konfigurieren. Die Kommandozeile --write-defaults erzeugt eine solche Datei für Sie.

Einstellungsdateien heißen .qmllint.ini und sehen wie folgt aus:

[General]
AdditionalQmlImportPaths=
DisableDefaultImports=false
OverwriteImportTypes=
ResourcePath=

[Warnings]
BadSignalHandler=warning
Deprecated=warning
ImportFailure=warning
InheritanceCycle=warning
MultilineStrings=info
PropertyAlias=warning
RequiredProperty=warning
TypeError=warning
UnknownProperty=warning
UnqualifiedAccess=warning
UnusedImports=info
WithStatement=warning

Die Warnstufen können auf info, warning oder disable gesetzt werden, genau wie bei den Kommandozeilenoptionen.

qmllint sucht automatisch nach einer Einstellungsdatei am Ort der qml-Datei, die gelintet werden soll. Es durchsucht auch alle übergeordneten Verzeichnisse, um diese Datei zu finden und wendet automatisch die darin enthaltenen Einstellungen an. Sie können dieses Verhalten durch die Verwendung von --ignore-settings deaktivieren. Sie können diese Standardeinstellungen jederzeit außer Kraft setzen, indem Sie Befehlszeilenparameter angeben, die Vorrang vor den Warnstufen in den Einstellungen haben.

Skripting

qmllint kann mit der Option --json <file> JSON schreiben oder ausgeben, das gültiges JSON mit Warnmeldungen, Datei- und Zeilenspeicherort der Warnungen und deren Schweregrad zurückgibt. Verwenden Sie den speziellen Dateinamen '-', um in stdout statt in eine Datei zu schreiben. Dies kann verwendet werden, um qmllint einfacher in Ihre Pre-Commit-Hooks oder CI-Tests zu integrieren.

Siehe auch Typbeschreibungsdateien und Qt Quick Tools and Utilities.

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