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严重性消息描述
M1错误枚举值无效
M2错误枚举值必须是字符串或数字
M3错误期望数字值
M4错误期望布尔值
M5错误期望字符串值
M6错误无效的URL
M7警告文件或目录不存在
M8错误无效的颜色
M9错误期望锚定行
M10错误重复属性绑定另请参阅:重复键'{a}'
M11错误期望标识符另请参阅:期望一个标识符而不是'{a}'(保留词)
M14错误无效的id另请参阅:期望一个标识符而不是'{a}'(保留词)
M15错误重复的id文件中的id必须唯一。另请参阅:重复键'{a}'
M16错误无效的属性名 name
M17错误Name 不是一个成员
M18错误Field 不是 object 的成员
M19警告条件赋值这可能是一个输入错误。如果是故意的,请在赋值周围加括号。
M20警告未结束的空白情况块情况块应该是空的或者以 breakreturncontinue 等控制流语句结束。或者,您可以通过在末尾添加 // fall through 注释来表示有意忘记
M23警告不要使用 eval参见: eval 是邪恶的
M28警告不可达表明下划线的声明永远不会被执行。
M29警告不要使用 with参见: 意外的 'with'
M30警告不要使用逗号表达式
M31警告不必要的消息压制
M103警告Name 已经是一个形式参数
M104警告Name 已经是一个函数
M105警告在声明之前使用了 Var name
M106警告Name 已经是一个 var
M107警告Name 被声明超过一次在函数中声明的变量在函数的任何地方都始终是可见的,即使它们是在嵌套块或 for 语句条件中声明的。重新声明变量没有效果。
M108警告在声明之前使用了 name 函数参见: {a} 在定义之前被使用了
M109警告不要使用 Boolean 作为构造函数参见: 不要使用 {a} 作为构造函数
M110警告不要使用 String 作为构造函数参见: 不要使用 {a} 作为构造函数
M111警告不要使用 Object 作为构造函数参见: 不要使用 {a} 作为构造函数
M112警告不要使用 Array 作为构造函数参见: 不要使用 {a} 作为构造函数
M113警告不要使用 Function 作为构造函数参见: 不要使用 {a} 作为构造函数
M114提示function 关键字和开括号之间应该有一个空格参见: {a} 和 {b} 之间期望恰好有一个空格
M115警告不要使用独立的块块不会影响变量作用域。因此,与 ifwhile 等不相关的块没有任何效果,应避免使用。
M116警告不要使用 void 表达式
M117警告混淆的加号参见: 混淆的加号
M119警告混淆的减号参见: 混淆的减号
M121提示在一行中声明所有函数变量
M123提示不必要的括号
M126警告==!= 可能执行类型强制转换,使用 ===!== 以避免它非严格的相等比较允许将其参数转换为共同类型。这可能导致意外的结果,例如 ' \t\r\n' == 0 为真。请使用严格的相等运算符 ===!==,并明确指出您需要的转换。
M127警告表达式声明应该是赋值、调用或 delete 表达式
M128错误状态不能具有指定的子项
M129错误类型不能递归实例化
M201提示在函数的开始处放置 var 声明参见:将 'var' 声明移至函数顶部
M202提示每行仅使用一个语句
M220错误此类型(类型名称)不支持作为 UI 文件(.ui.qml)的根元素有关支持 QML 类型的更多信息,请参阅 UI 文件
M221错误在 UI 文件(.ui.qml)中不支持此类型(类型名称)有关支持 QML 类型的更多信息,请参阅 UI 文件
M222错误在 UI 文件(.ui.qml)中不支持函数有关支持 JavaScript 函数的列表,请参阅 支持的方法
M223错误在 UI 文件(.ui.qml)中不支持 JavaScript 块有关支持功能的更多信息,请参阅 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 的原型 name
M302错误无法解析原型 name
M303错误原型循环,最后一个非重复组件是 name
M304错误无效属性类型 name
M305警告使用 ==!= 会执行类型强制转换,请使用 ===!== 以避免它请参见 M126
M306警告大写字母开头的函数调用应使用 new按照惯例,大写字母开头的函数是构造函数,应仅使用 new
M307警告仅使用 new 与大写字母开头的函数参见: 不要使用 {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 元素参见:数组的字面量表示法 [] 是首选
M324错误访问 AST 时遇到最大递归限制,代码模型将不可靠且可能无效
M325警告逻辑值不依赖于实际值已移除:自 Qt Creator 版本 12 起不再使用此警告
M326错误组件只能有一个子元素有关更多信息,请参阅组件
M327警告组件需要一个子元素有关更多信息,请参阅组件
M400警告重复导入已将导入语句添加了两次。有关更多信息,请参阅导入语句
M401错误不要将根项目作为别名引用别名属性不能直接引用根组件。创建组件的实例代替。
M402警告避免在层次结构中引用根项目别名属性不能在层次结构中引用根组件。创建组件的实例代替。

重置代码模型

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

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

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

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

另请参阅检查代码语法使用 QML 模块与插件,以及分析代码

©2024 The Qt Company Ltd. 包含在本内的文档贡献是各个所有者的版权。本提供的文档是根据自由软件基金会发布的GNU 自由文档许可证版本 1.3条款许可的。