JavaScript 和 QML 检查

要运行静态检查,请访问Tools >QML/JS >Run Checks 或选择Ctrl+Shift+C

问题中的QMLQML Analysis 过滤器中查看结果。

注意: 如果为项目打开QML Language Server ,它会使用qmllint检查 QML 和 JavaScript 代码并生成警告,因此错误代码和信息与JavaScript 和 QML 错误代码中的不同。

启用和禁用信息

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

  1. 转到首选项> > 。 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 错误解释

代码严重程度信息说明
M1错误枚举值无效
M2错误枚举值必须是字符串或数字
M3错误预期数值
M4错误预期布尔值
M5错误预期字符串值
M6错误无效 URL
M7警告文件或目录不存在
M8错误颜色无效
M9错误预期锚点线
M10错误属性绑定重复有关详细信息,请参阅JSLint 错误解释中的重复键"{a}"
M11错误预期标识符更多信息,请参见JSLint Error Explanations 中的Expected an identifier and instead saw '{a}' (a reserved word)
M14错误无效 id更多信息,请参阅 JSLint ErrorExplansion的 Expected an identifier and instead saw '{a}' (a reserved word)
M15错误重复标识符文件中的标识符必须是唯一的。更多信息,请参见重复的键 '{a}'
M16错误属性名称无效name
M17错误Name 没有成员
M18错误Field 不是object
M19警告条件中的赋值可能是输入错误。如果是有意为之,请用括号将赋值包起来。
M20警告未结束的非空案例块例块要么为空,要么以流程控制语句(如break,returncontinue )结束。或者,也可以以// fall through 注释结束,以表示有意中断。
M23警告不要使用eval有关详细信息,请参阅JSLint 错误解释中的eval is evil
M28警告无法访问表示下划线语句永远不会被执行。
M29警告请勿使用with有关详细信息,请参阅JSLint 错误解释中的意外 "with"
M30警告请勿使用逗号表达式
M31警告不必要的信息压制
M103警告Name 已是正式参数
M104警告Name 已经是一个函数
M105警告变量name 在其声明之前被使用
M106警告Name 已经是一个变量
M107警告Name 已声明多次在函数中声明的变量在函数的任何地方都是可见的,即使是在嵌套块或for 语句条件中声明的变量也是如此。重新声明变量无效。
M108警告函数name 在声明之前被使用更多信息,请参阅JSLint 错误解释的 {a} 在定义之前被使用
M109警告请勿将Boolean 用作构造函数更多信息,请参见JSLint Error Explanations 中的Do not use {a} as a constructor
M110警告请勿将String 用作构造函数更多信息,请参阅"请勿将 {a} 用作构造函数"。
M111警告请勿将Object 用作构造函数更多信息,请参见不要将 {a} 用作构造函数
M112警告请勿将Array 用作构造函数更多信息,请参见不要将 {a} 用作构造函数
M113警告请勿将Function 用作构造函数更多信息,请参阅不要将 {a} 用作构造函数
M114提示function 关键字和开头的括号之间应该用一个空格隔开如需了解更多信息,请参阅JSLint Error Explanations 中的Expected exactly one space between {a} and {b}
M115警告请勿使用独立代码块块不会影响变量的作用域。因此,未与if,while 等相关联的块没有任何作用,应避免使用。
M116警告请勿使用 void 表达式
M117警告混淆的复数更多信息,请参阅JSLint 错误解释中的混淆冒号
M119警告混淆的减号更多信息,请参阅JSLint 错误说明中的混淆减号
M121提示在一行中声明所有函数变量
M123提示不必要的括号
M126警告== 和 可能会执行类型强制,请使用 或 以避免这种情况。!= === !== 非严格相等比较允许将参数转换为通用类型。这会导致意想不到的结果,如' \t\r\n' == 0 为真。请使用严格的相等运算符===!== ,并明确说明所需的转换。
M127警告表达式语句只能是赋值、调用或删除表达式
M128错误一个状态不能有指定的子项
M129错误类型不能递归实例化
M201提示将 var 声明放在函数的开头有关详细信息,请参阅JSLint 错误解释中的将 "var "声明移至函数顶部
M202提示每行只使用一条语句
M220错误不支持此类型(类型名称)作为用户界面文件(.ui.qml)的根元素有关支持的 QML 类型的更多信息,请参阅UI 文件
M221错误UI 文件 (.ui.qml) 中不支持该类型(类型名称)。有关支持的 QML 类型的更多信息,请参阅UI 文件
M222错误用户界面文件 (.ui.qml) 不支持函数有关支持的 JavaScript 函数列表,请参阅支持的方法
M223错误用户界面文件(.ui.qml)中不支持 JavaScript 块有关支持的功能的更多信息,请参阅UI 文件
M224错误用户界面文件 (.ui.qml) 中不支持行为类型。有关支持的 QML 类型的更多信息,请参阅用户界面文件
M225错误用户界面文件(.ui.qml)中的根项只支持状态。有关支持的功能的更多信息,请参阅用户界面文件
M226错误不支持在用户界面文件(.ui.qml)中引用根项的父项。有关支持功能的更多信息,请参阅用户界面文件
M227错误请勿在用户界面文件(.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错误不要将根项目作为别名引用别名属性不能直接引用根组件。请为该组件创建一个实例。
M402警告避免在层次结构中引用根项目别名属性不能引用层次结构中的根组件。请创建该组件的实例。
M403错误当条件不能包含对象when 条件设置为当条件满足时求值为true 的表达式。

重置代码模型

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

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

要查看错误信息,请在代码编辑器中或在Qt Design Studio 中打开 QML 文件时,将鼠标指针移至Qt Creator 有下划线的代码上。

要重置代码模型,请选择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.