JavaScript 和 QML 检查

要运行静态检查,请转到 工具 > QML/JS > 运行检查 或按 Ctrl+Shift+C

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

启用和禁用消息

要启用和禁用 QML 和 JavaScript 消息

  1. 转到 首选项 > Qt Quick > QML/JS 编辑
  2. 选择 使用自定义静态分析器

    {QML/JS Editing tab in Qt Quick preferences}

  3. 已启用 中,选择您想看到的消息。
  4. 要为非 Qt Quick UI 文件禁用消息,请在 禁用非 Qt Quick UI 消息 中选择它们。您不能只为非 Qt Quick UI 文件启用消息。

JavaScript 和 QML 错误代码

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

Id严重性消息描述
M1Error枚举的值无效
M2Error枚举值必须是字符串或数字
M3Error期望数值
M4Error期望布尔值
M5Error期望字符串值
M6Error无效的 URL
M7Warning文件或目录不存在
M8Error无效的颜色
M9Error期望锚线
M10Error重复属性绑定另请参阅:重复键 '{a}'
M11Error期望 id另请参阅:期望标识符,而不是遇到 '{a}' (一个保留字)
M14Error无效 id另请参阅:期望标识符,而不是遇到 '{a}' (一个保留字)
M15Error重复 id文件中的ID必须唯一。另请参阅:重复键'{a}'
M16Error无效的属性名 name
M17ErrorName 没有成员
M18ErrorField 不是 object 的成员
M19Warning条件语句中的赋值可能是按键错误。如果是故意的,用括号括起赋值。
M20Warning未终止的非空case块case块应该是空的或者应以一些流程控制语句结束,例如 breakreturncontinue 。或者你也可以通过在末尾加上一个 // fall through 注释来表明故意跳过。
M23Warning不要使用 eval另请参阅:eval 是邪恶的
M28Warning不可达表明下划线语句永远不会被执行。
M29Warning不要使用 with另请参阅:意外的 'with'
M30Warning不要使用逗号表达式
M31Warning不必要的消息抑制
M103WarningName 已经是一个形式参数
M104WarningName 已经是一个函数
M105WarningVar name 在其声明之前被使用
M106WarningName 已经是 var
M107WarningName 被声明过多次在函数中声明的变量总是在函数的任何地方可见,即使在嵌套的块中或在 for 语句条件中声明。重新声明变量不会有任何效果。
M108Warning在声明之前使用了函数 name另请参阅:{a} 在定义之前被使用了
M109Warning不要将 Boolean 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M110Warning不要将 String 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M111Warning不要将 Object 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M112Warning不要将 Array 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M113Warning不要将 Function 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M114提示function 关键字和开括号之间应该有一个空格另请参阅:期望在 {a} 和 {b} 之间恰好有一个空格
M115Warning不要使用独立块块不会影响变量作用域。因此,与 ifwhile 等 不相关的块是无效的,应该避免。
M116Warning不要使用 void 表达式
M117Warning混淆的加号另请参阅:混淆的加号
M119Warning混淆的减号另请参阅:混淆的减号
M121提示在一行上声明所有的函数变量
M123提示不必要的括号
M126Warning==!= 可能执行类型转换,使用 ===!== 来避免它非严格相等比较允许将其参数转换为公共类型。这可能导致意外的结果,例如 ' \t\r\n' == 0 为真。使用严格相等运算符 ===!== 并明确您所需的转换。
M127Warning表达式语句应该是赋值、调用或删除表达式
M128Error状态无法拥有指定的子项
M129Error类型不能递归实例化
M201提示将变量声明放置在函数的开始处另请参阅:[将 'var' 声明移动到函数顶部](http://linterrors.com/js/move-var-declarations-to-the-top-of-the-function)。
M202提示每行只使用一个语句
M203WarningQt设计工作室不支持 imperative 代码
M204WarningQt设计工作室不支持此 QML 类型
M205WarningQt设计工作室无法正确解析对父 QML 类型的引用
M206Warning此视觉属性绑定无法在本地上下文中评估,并且可能不会按预期在 Qt 设计工作室中显示
M207WarningQt设计工作室仅支持根 QML 类型中的状态
M208Error此 ID 可能存在歧义,并且不被 Qt 设计工作室支持
M209Error此类型(类型名称)不能作为 Qt 设计工作室的根元素支持
M220Error此类型(类型名称)不能作为 UI 文件(.ui.qml)的根元素支持有关支持的 QML 类型的更多信息,请参阅UI 文件
M221Error此类型(类型名称)在 UI 文件(.ui.qml)中不支持有关支持的 QML 类型的更多信息,请参阅UI 文件
M222ErrorUI 文件(.ui.qml)中不支持函数有关支持的 JavaScript 函数列表,请参阅 支持的方法
M223ErrorUI 文件(.ui.qml)不支持 JavaScript 块有关更多支持功能的信息,请参阅 UI 文件
M224ErrorUI 文件(.ui.qml)不支持行为类型有关支持的 QML 类型的更多信息,请参阅UI 文件
M225ErrorUI 文件(.ui.qml)中仅支持根项中的状态有关更多支持功能的信息,请参阅 UI 文件
M226ErrorUI 文件(.ui.qml)中不支持对根项的父项进行引用有关更多支持功能的信息,请参阅 UI 文件
M227Error在 UI 文件(.ui.qml)中不要混合翻译函数尽管支持多个不同的翻译函数,例如 qsTrqsTrId,但您应该选择一个并在 UI 文件中一致地使用。有关更多信息,请参阅 Qt QML 方法
M300Error未知组件
M301Error无法解析 object 的原型 name
M302Error无法解析原型 name
M303Error原型循环,最后一个非重复组件是 name
M304Error无效属性类型 name
M305Warning==!= 执行类型强制转换,使用 ===!== 避免此操作请参阅 M126
M306Warning以大写字母开头的函数调用应使用 new按照约定,以大写字母开头的函数是构造函数,应该只使用 new 使用。
M307Warning仅与以大写字母开头的函数一起使用 new另请参阅:不要使用 {a} 作为构造函数
M308Warning不要将 Number 用作构造函数另请参阅:不要使用 {a} 作为构造函数
M309提示在二元运算符周围使用空格
M310Warning意外空块,使用 ({}) 作为空对象字面量
M311提示使用 type 而不是 varvariant 以提高性能
M312Error缺少属性 number
M313Error预期对象值
M314Error预期数组值
M315Error预期 Value
M316Error最大数值为 number
M317Error最小数值是 数字
M318Error最大数值是不包含的
M319Error最小数值是不包含的
M320Error字符串值与所需模式不匹配
M321Error最小字符串值长度是 数字
M322Error最大字符串值长度是 数字
M323ErrorNumber 预期在数组值中元素参见: 数组字面量表示[]是首选.
M324Error访问AST时达到最大递归限制,代码模型将不可靠且很可能无效
M325Warning逻辑值不依赖于实际值已删除:此警告不再从Qt Creator 12版本使用。
M326Error组件仅允许有一个子元素更多信息,请参阅 组件.
M327Warning组件需要子元素更多信息,请参阅 组件.
M400Warning重复导入已经添加了重复的导入语句。有关更多信息,请参阅 导入语句.
M401Error避免将根项作为别名引用别名属性不能直接引用根组件。创建组件实例代替。
M402Warning避免在层次结构中引用根项别名属性不能在层次结构中引用根组件。创建组件实例代替。

重置代码模型

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

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

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

要重置代码模型,选择 工具 > QML/JS > 重置代码模型.

另请参阅检查代码语法使用插件QML模块.

在特定Qt许可证下可用。
了解更多。