qmllint参考
qmllint 是随Qt一起提供的工具,用于验证QML文件的语法有效性。它还会警告一些QML抗模式。如果您想禁用特定类型的警告,可以通过在命令行上传递 --help
来找到相应的标志。
默认情况下,一些问题会导致打印警告并导致非零退出代码。然而,较小的问题(如未使用的导入)默认情况下是信息性消息,并不会影响退出代码。qmllint非常可配置,允许禁用警告或更改其处理方式。用户可自由将任何问题转换为警告、信息性消息或完全禁用它们。
qmllint会警告关于以下方面:
- 属性的不合格访问
- 在QML中使用没有匹配信号的处理程序
- 在QML中使用with语句
- 与编译QML代码相关的问题
- 未使用的导入
- 已弃用的组件和属性
- 以及其他许多内容
注意:为了使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
暂时禁用文件中的警告。
您可以在行尾进行标记,如果一行产生警告
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 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。使用特殊文件名 '-' 将输出写入 stdout 而不是文件。这可以更容易地将 qmllint 集成到您的 pre-commit 钩子或 CI 测试中。
另请参阅类型描述文件 和 Qt Quick 工具和实用程序。
© 2024 Qt 公司。包括在内的文档贡献是各自所有者的版权。提供的文档根据自由软件基金会发布的 GNU 自由文档许可版 1.3 的条款进行许可。Qt 和相关标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。