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

警告级别可以设置为 infowarningdisable,就像命令行选项一样。

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. 的商标。所有其他商标均为其各自所有者的财产。