qmllint

qmllintはQtに同梱されているツールで、QMLファイルの構文の妥当性を検証します。また、QMLのアンチパターンについても警告を発します。特定の警告タイプを無効にしたい場合は、コマンドラインで--help を渡すことで、適切なフラグを見つけることができます。

デフォルトでは、いくつかの問題は警告として出力されます。警告の数が--max-warnings で設定できる制限を超えた場合、終了コードは0以外になります。しかし、マイナーな問題(未使用のインポートなど)はデフォルトでは単なる情報メッセージで、終了コードに影響することはありません。qmllintは非常に設定しやすく、警告を無効にしたり、警告の扱い方を変更したりできます。ユーザはどのような問題でも自由に警告や情報メッセージに変えたり、警告を完全に無効にしたりすることができます。

qmllint は以下のような警告を出します:

  • プロパティへの修飾されていないアクセス
  • 一致するシグナルを持たないシグナルハンドラの使用
  • QMLにおけるwith文の使用
  • QMLコードのコンパイルに関する問題
  • 未使用のインポート
  • 非推奨のコンポーネントやプロパティ
  • その他多くの問題

qmllint の警告やエラーの修正方法についてはQML Lint Warning and Errorsを参照してください。

注意: qmllintが正しく動作するためには型情報が必要です。この情報はQMLモジュールのインポートパスから提供されます。デフォルトではカレントディレクトリとQtの組み込み型のインポートパスがインポートパスとして使用されます。デフォルトに含まれていないインポートパスを追加するには、-I フラグを指定します。

利用可能なコマンドラインオプションの概要と説明は、qmllint --help を実行してください。

コンパイラの警告

qmllintはqmlscでコンパイルできないコードについて警告します。

これらの警告はデフォルトでは有効になっていません。有効にするには--compiler warning を指定するか、設定ファイルを調整してください。

コンポーネントやプロパティを非推奨としてマークする

qmllintはプロパティとコンポーネントの両方を非推奨としてマークすることができます:

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

コンポーネントの非推奨の警告はコンポーネントが作成される度に表示されます。

インラインで警告を無効にする

// qmllint disable を使って、ファイル中の警告を一時的に無効にすることができます。

1行で警告が表示される場合、行末で警告を無効にすることができます:

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

また、// qmllint disable を含む行にのみコメントを記述し、// qmllint enable でブロックを終了させることで、行のブロックに対してコメントを無効にすることもできます:

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

qmllint はqmllint で始まるすべての一行コメントをディレクティブとして解釈します。qmllint は で始まる一行コメントをすべてディレクティブとして解釈します。 したがって、警告を有効または無効にしたい場合を除き、この方法でコメントを始めることはできません。

注意: 上の例のように、すべての警告を無効にするのではなく、無効にしたい 警告や警告のリストを明示的に指定する方が望ましいです。これは、qmllint disable の後に警告のカテゴリーを列挙することで可能です(名前は、--help に列挙されているオプションと同じです)。

設定

コマンドラインオプションを渡すだけでなく、設定ファイルを使って qmllint を設定することもできます。コマンドライン--write-defaults で設定ファイルが生成されます。

設定ファイルは.qmllint.ini という名前で以下のようになります:

[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

警告レベルはコマンドラインオプションと同じようにinfo,warning,disable に設定できます。

qmllintは自動的にリントされるqmlファイルの場所で設定ファイルを探します。また、このファイルを見つけるためにすべての親ディレクトリを検索し、その中の設定を自動的に適用します。この動作を無効にするには--ignore-settings を使ってください。コマンドラインパラメータを指定することで、これらのデフォルトを常に上書きすることができます。

スクリプト

qmllint は--json <file> オプションを使って JSON を書き込んだり出力したりできます。このオプ ションは警告メッセージ、警告のファイルや行の場所、深刻度レベルを含む有効な JSON を返します。特別なファイル名 '-' を使って、ファイルではなく標準出力に書き込むことができます。これを使うと、コミット前フックやCIテストにqmllintを簡単に組み込むことができます。

Type Description FilesQt 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.