"strict" QML 模式?

"strict" mode for QML?

Qt 的 QML 语言是否提供任何类型的 "strict" 模式?特别是,我想要两个功能:

1.使用 qml lint

运行 构建设置中所有 .qml 和 .js 文件的 qmllint

find ./myproject -type f -regex ".*\.\(qml\|js\)" -exec "$QT_DIR/bin/qmllint" \{\} +

2。 QML 上的应用程序崩溃 error/warning

编写自定义 QDebug 消息处理函数 static void handler(QtMsgType type, const QMessageLogContext& context, const QString &message); 您通过 qInstallMessageHandler(&MyQDebugMessageHandler::handler); 注册,将 QML 警告转换为致命日志:

if (type == QtWarningMsg)
{
    auto fatalWarnings = std::vector<QString>{
            QStringLiteral("ReferenceError:"),
            QStringLiteral("is not a type"),
            QStringLiteral("File not found"),
    };

    for (const auto &s : fatalWarnings)
    {
        if (message.contains(s))
        {
            type = QtFatalMsg;
            break;
        }
    }
}

然后确保 QtFatalMsg 类型的 QDebug 消息使应用程序崩溃。

3。 console.assert()

时崩溃

console.assert() 会产生错误,但没有特定的错误来检测它们。因此,调整第 2 点,使应用程序也因错误而崩溃。