My colleague Henk Van Der Laak made a interesting tool that checks your code against the QML coding conventions. It uses the internal parser’s abstract syntax tree of Qt 5.6 and a visitor design.
It has a command line, but being developers ourselves we want an API too of course. Then we can integrate it in our development environments without having to use popen!
So this is how to use that API:
// Parse the code QQmlJS::Engine engine; QQmlJS::Lexer lexer(&engine); QQmlJS::Parser parser(&engine); QFileInfo info(a_filename); bool isJavaScript = info.suffix().toLower() == QLatin1String("js"); lexer.setCode(code, 1, !isJavaScript); bool success = isJavaScript ? parser.parseProgram() : parser.parse(); if (success) { // Check the code QQmlJS::AST::UiProgram *program = parser.ast(); CheckingVisitor checkingVisitor(a_filename); program->accept(&checkingVisitor); foreach (const QString &warning, checkingVisitor.getWarnings()) { qWarning() << qPrintable(warning); } }