本页内容

JavaScript 和 QML 检查

对项目中的 QML 和 JavaScript 代码运行静态检查,以发现常见问题。

要运行静态检查,请转至Tools >QML/JS >Run Checks ,或按Ctrl+Shift+C

“问题”中的“QML ”和“QML Analysis ”筛选器中查看结果。

注意:若为 某个项目启用“QML Language Server ”,该功能将使用qmllint检查 QML 和 JavaScript 代码并生成警告,因此其错误代码和消息与《JavaScript 和 QML 错误代码》中的内容有所不同。

启用和禁用消息

要启用或禁用静态分析器的 QML 和 JavaScript 消息:

  1. 转至“Preferences ” > Qt Quick >QML/JS Editing
  2. 选择“Use customized static analyzer ”。

    Qt Quick 首选项中的“QML/JS 编辑”选项卡

  3. 在“Enabled ”中,选择您希望显示的消息。
  4. 若要仅在“Qt Quick ”UI文件中显示特定消息,请在 Only for Qt Quick UI中选中它们。您无法仅针对非Qt Quick UI文件启用消息。

JavaScript 和 QML 错误代码

许多错误消息与 Douglas Crockford 的JSLint工具中的消息相似。有关 JSLint 错误的更多信息,请参阅《JSLint 错误说明》

Id严重性消息描述
M1错误枚举值无效
M2错误枚举值必须是字符串或数字
M3错误预期为数值
M4错误预期为布尔值
M5错误预期为字符串值
M6错误URL 无效
M7警告文件或目录不存在
M8错误颜色无效
M9错误预期锚定线
M10错误属性绑定重复有关详细信息,请参阅《JSLint 错误说明》中的“键 '{a}' 重复”部分
M11错误预期为标识符有关详细信息,请参阅《JSLint 错误说明中的“预期为标识符,但发现的是 '{a}'(一个保留字)”。
M14错误ID 无效有关详细信息,请参阅“预期为标识符,但实际遇到的是 '{a}'(一个保留字)”。
M15错误ID 重复文件中的标识符必须是唯一的。有关更多信息,请参阅“重复的键 '{a}'”
M16错误属性名称无效name
M17错误Name 没有成员
M18错误Field 不是object
M19警告条件中的赋值这可能是输入错误。如果是故意的,请将赋值用圆括号括起来。
M20警告未结束的非空 case 代码块case 代码块应为空,或以流程控制语句结尾,例如breakreturncontinue 。此外,您也可以通过以// fall through 注释结尾来表示有意让程序继续执行。
M23警告请勿使用eval有关更多信息,请参阅JSLint 错误说明中的“eval 是邪恶的”。
M28警告无法执行表示带下划线的语句永远不会被执行。
M29警告请勿使用with有关详细信息,请参阅《JSLint 错误说明》中的“意外出现的 'with'”
M30警告请勿使用逗号表达式
M31警告不必要的消息抑制
M103警告Name 已经是形式参数
M104警告Name 已经是函数了
M105警告变量name 在声明之前已被使用
M106警告Name already 是一个变量
M107警告Name 该变量被声明多次在函数中声明的变量在函数的任何位置都可见,即使是在嵌套代码块或for 语句的条件中声明的。重新声明该变量不会产生任何影响。
M108警告在声明之前使用了函数name 有关详细信息,请参阅《JSLint 错误说明》中“{a} 在定义之前已被使用”一节。
M109警告请勿将Boolean 用作构造函数有关详细信息,请参阅《JSLint 错误说明中的“请勿将 {a} 用作构造函数”
M110警告请勿将String 用作构造函数有关详细信息,请参阅“请勿将 {a} 用作构造函数”
M111警告请勿将Object 用作构造函数有关详细信息,请参阅“请勿将 {a} 用作构造函数”
M112警告请勿将Array 用作构造函数有关详细信息,请参阅“请勿将 {a} 用作构造函数”
M113警告请勿将Function 用作构造函数有关详细信息,请参阅“请勿将 {a} 用作构造函数”
M114提示function 关键字与左括号之间应仅有一个空格有关详细信息,请参阅《JSLint 错误说明》中的“{a} 和 {b} 之间应恰好有一个空格”
M115警告请勿使用独立代码块代码块不会影响变量的作用域。因此,未与ifwhile 等关联的代码块没有任何效果,应避免使用。
M116警告请勿使用空表达式
M117警告易混淆的加号有关详细信息,请参阅《JSLint 错误说明》中的“易混淆的加号”
M119警告易混淆的减号有关更多信息,请参阅《JSLint 错误说明》中的“易混淆的减号”
M121提示将所有函数变量声明在同一行
M123提示多余的括号
M126警告== 以及!= 可能会进行类型强制转换,请使用===!== 来避免此情况非严格相等比较允许将其参数转换为共同类型。这可能会导致意外结果,例如' \t\r\n' == 0 返回 true。请使用严格相等运算符===!== ,并明确指定所需的转换。
M127警告表达式语句应仅为赋值、调用或删除表达式
M128错误状态不能包含指定的子项
M129错误无法递归实例化该类型
M201提示请将变量声明置于函数开头有关更多信息,请参阅《JSLint 错误说明》中的“将 'var' 声明移至函数开头”。
M202提示每行仅使用一条语句
M203警告Qt Quick Designer 不支持命令式代码
M204警告Qt Quick Designer 不支持此 QML 类型
M205警告Qt Quick Designer 无法正确解析对父级 QML 类型的引用
M206警告此视觉属性绑定无法在本地上下文中进行求值,且可能无法在Qt Quick Designer 中按预期显示
M207警告Qt Quick 设计器仅支持根 QML 类型中的状态
M208错误此 ID 可能存在歧义,且在Qt Quick Designer 中不被支持
M209错误Qt Quick Designer 不支持将此类型(类型名称)用作根元素
M220错误此类型(类型名称)不支持作为 UI 文件(.ui.qml )的根元素有关受支持的 QML 类型的更多信息,请参阅UI 文件
M221错误此类型(类型名称)在 UI 文件中不受支持(.ui.qml有关受支持的 QML 类型的更多信息,请参阅UI 文件
M222错误UI 文件不支持函数(.ui.qml有关受支持的 JavaScript 函数列表,请参阅“受支持的方法”
M223错误UI 文件不支持 JavaScript 代码块(.ui.qml有关受支持功能的更多信息,请参阅“UI 文件”
M224错误UI 文件不支持该行为类型(.ui.qml有关受支持的 QML 类型的更多信息,请参阅UI 文件
M225错误状态仅在 UI 文件的根项目中受支持(.ui.qml有关受支持功能的更多信息,请参阅UI 文件
M226错误UI 文件中不支持引用根项的父项(.ui.qml有关受支持功能的更多信息,请参阅UI 文件
M227错误请勿在 UI 文件中混合使用多种翻译函数(.ui.qml尽管支持多种不同的翻译函数(例如qsTrqsTrId ),但您应在 UI 文件中选择其中一种并始终如一地使用。有关详细信息,请参阅Qt Qml 方法
M300错误未知组件
M301错误无法解析name 的原型object
M302错误无法解析原型name
M303错误原型循环中,最后一个非重复组件是name
M304错误属性类型无效name
M305警告== != 会进行类型强制转换,请使用 或 来避免此情况=== !== 参见M126
M306警告调用以大写字母开头的函数时,应使用new根据惯例,以大写字母开头的函数是构造函数,应仅与new 一起使用。
M307警告仅将 `new ` 用于以大写字母开头的函数有关详细信息,请参阅《JSLint 错误说明中的“请勿将 {a} 用作构造函数”
M308警告请勿将Number 用作构造函数有关详细信息,请参阅“不要将 {a} 用作构造函数”。
M309提示二元运算符两侧应使用空格
M310警告意外出现空代码块,请使用 ({}) 表示空对象字面量
M311提示为提高性能,请使用type 代替varvariant
M312错误属性缺失number
M313错误预期为对象值
M314错误预期为数组值
M315错误Value 预期为值
M316错误最大数值为number
M317错误最小数值为number
M318错误最大数值为(不包括该数值)
M319错误最小数值不包含在内
M320错误字符串值与所需模式不匹配
M321错误字符串值的最小长度为number
M322错误字符串值的最大长度为number
M323错误Number 数组值中应包含元素有关更多信息,请参阅《JSLint 错误说明》中的“建议使用数组字面量表示法 []”。
M324错误访问 AST 时达到最大递归限制,代码模型将不可靠且极有可能无效
M326错误组件仅允许有一个子元素有关详细信息,请参阅Component
M327警告组件需要一个子元素有关详细信息,请参阅Component
M400警告导入重复一个导入语句被添加了两次。有关详细信息,请参阅“导入语句”
M401错误请勿将根项用作别名alias 属性不能直接引用根组件。请改为创建该组件的实例。
M402警告请避免在层次结构中引用根项alias 属性不能引用层次结构中的根组件。请改为此组件创建一个实例。
M403错误“when”条件中不能包含对象请将when 条件设置为一个表达式,当条件满足时,该表达式应评估为true

重置代码模型

如果在添加新的 QML 模块后看到以下错误消息,请尝试构建项目,然后重置代码模型:

  • 未找到 QML 模块。
  • 未知组件 (M300)。

要查看错误消息,请将鼠标指针悬停在代码编辑器中被Qt Creator 下划线的代码上,或在Qt Quick Designer中打开QML文件时查看。

要重置代码模型,请选择“Tools ” > “QML/JS ” > “Reset Code Model ”。

另请参阅 “检查代码语法”、“分析代码”以及“使用插件的 QML 模块”

Copyright © The Qt Company Ltd. and other contributors. 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.