qmllint
qmllintはQtに同梱されているツールで、QMLファイルの構文の妥当性を検証します。qmllint をビルドシステムに組み込むことで、簡単に使用することができます。また、QMLのアンチパターンについても警告してくれます。特定の警告を無効にする方法については{qmllintの警告の設定}を参照してください。
注意: Qt Creator のようなIDEを使用する場合、qmllint を手動で実行する必要はありません。IDEは QML Language Serverを使用し、入力中にリアルタイムのリンティング出力と診断を提供します。
デフォルトでは、いくつかの問題が警告として出力されます。--max-warnings で設定できる制限を超える警告が表示された場合、終了コードは 0 以外になります。qmllintは非常に設定しやすく、警告を無効にしたり、警告の扱いを変更することができます。
qmllintは以下のような警告を出します:
- プロパティの修飾されていないアクセス
- 一致するシグナルがないシグナルハンドラの使用
- QMLにおけるwith文の使用
- QMLコードのコンパイルに関する問題
- 未使用のインポート
- 非推奨のコンポーネントやプロパティ
- その他多くの問題
qmllint の警告やエラーの修正方法についてはQML Lint Warning and Errorsを参照してください。
注意: qmllintが正しく動作するためには型情報が必要です。この情報はQMLモジュールのインポートパスから提供されます。デフォルトではカレントディレクトリとQtの組み込み型のインポートパスがインポートパスとして使用されます。デフォルトに含まれていないインポートパスを追加するには、-I フラグを指定します。
利用可能なコマンドラインオプションの概要と説明は、qmllint --help を実行してください。
コンパイラの警告
qmllintはqmlscでコンパイルできないコードについて警告します。
これらの警告はデフォルトでは有効になっていません。有効にするには、コンパイラ警告カテゴリを使うようにqmllint を設定してください。
CMake での qmllint の使用
QML モジュールを作成するための CMake APIqt_add_qml_module()を使っているプロジェクトでは、all_qmllint のような便利なターゲットが自動的に作成されます。これらは特定のモジュールやプロジェクトのすべてのQMLファイルに対してqmllintを実行します。
コンポーネントやプロパティを非推奨としてマークする
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 警告の設定
qmllint が出す警告とその重要度のレベルを設定できます。これらのレベルはinfo, {warning},error,disable のいずれかです。.qmllint.ini 設定ファイルを使うか、コマンドラインオプションを qmllint に渡すことで警告をカスタマイズできます。コマンドラインオプションはデフォルトと設定ファイルを上書きします。
コマンドラインを使用して警告カテゴリのレベルをカスタマイズするには、対応するコマンドラインオプションを希望のレベルに設定します。
例えば、deprecationsに関する警告を無効にするには、--deprecated=disable オプションを付けてqmllintを呼び出します。また、未使用のインポートをエラーにするには、--unused-imports=error を渡します。
より永続的な方法で警告をカスタマイズするには、設定ファイルを修正します。詳細は設定ファイルのセクションを参照してください。
設定ファイル
コマンドラインオプションの他に、設定ファイルを使って qmllint を設定することもできます。コマンドライン--write-defaults で設定ファイルを生成できます。
設定ファイルは.qmllint.ini という名前で以下のようになります:
[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
警告レベルはコマンドラインオプションと同じようにinfo,warning,error,disable に設定できます。
qmllintは自動的にリントされるqmlファイルの場所で設定ファイルを探します。また、このファイルを見つけるためにすべての親ディレクトリを検索し、その中の設定を自動的に適用します。この動作を無効にするには--ignore-settings を使ってください。コマンドラインパラメータを指定することで、これらのデフォルトを常に上書きすることができます。
コンテキスト・プロパティの設定
コンテキスト・プロパティは、独自の設定ファイルで名前を定義したり無視したりすることができます。コンテキスト・プロパティ設定では、コンテキスト・プロパティの使用に対する非限定的なアクセス警告を無効にする、よりきめ細かなアプローチが可能です。一方、.qmllint.ini では、非限定的なアクセス警告をすべて無効にすることしかできません(コンテキスト・プロパティに関連しない警告も含まれる可能性があります)。
コンテキスト・プロパティの設定は、.contextProperties.ini という名前で、プロジェクトのソース・フォルダー内にあります。以下のようになります:
[General] disableUnqualifiedAccess = "myContextProperty1,myContextProperty2" warnOnUsage = "myContextProperty3,myContextProperty4,myContextProperty5" disableHeuristic = false
コンテキスト・プロパティ名への修飾されていないアクセスに関する qmllint の警告を無効にするには、そのコンテキスト・プロパティ名をdisableUnqualifiedAccess に追加します。複数のコンテキスト・プロパティ名はカンマで区切ります。
コンテキストプロパティの使用について警告するには、コンテキストプロパティ名をwarnOnUsage に追加します。 複数のコンテキストプロパティ名をカンマで区切ります。
qmllintヒューリスティックを制御するには、disableHeuristic をtrue またはfalse に設定します。
スクリプト
qmllint は--json <file> オプションで JSON を書き出したり出力したりできます。このオプショ ンは警告メッセージ、警告のファイルや行の場所、重大度レベルを含む有効な JSON を返します。ファイルの代わりに標準出力に書き込むには、特別なファイル名 '-' を使ってください。これを使うと、コミット前フックやCIテストにqmllintを簡単に組み込むことができます。
Type Description FilesとQt Quick Tools and Utilities も参照して ください。
© 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.