49 QQmlJSLinter(
const QStringList &importPaths,
const QStringList &extraPluginPaths = {},
50 bool useAbsolutePath =
false);
52 enum LintResult { FailedToOpen, FailedToParse, HasWarnings, HasErrors, LintSuccess };
53 enum FixResult { NothingToFix, FixError, FixSuccess };
55 class Q_QMLCOMPILER_EXPORT Plugin
57 Q_DISABLE_COPY(Plugin)
60 Plugin(Plugin &&plugin)
noexcept;
65 Plugin(
const QStaticPlugin &plugin);
68 const QString &name()
const {
return m_name; }
69 const QString &description()
const {
return m_description; }
70 const QString &version()
const {
return m_version; }
71 const QString &author()
const {
return m_author; }
72 const QList<QQmlJS::LoggerCategory> categories()
const
76 bool isBuiltin()
const {
return m_isBuiltin; }
77 bool isValid()
const {
return m_isValid; }
78 bool isInternal()
const
83 bool isEnabled()
const
87 void setEnabled(
bool isEnabled)
89 m_isEnabled = isEnabled;
93 friend class QQmlJSLinter;
95 bool parseMetaData(
const QJsonObject &metaData, QString pluginName);
98 QString m_description;
102 QList<QQmlJS::LoggerCategory> m_categories;
103 QQmlSA::LintPlugin *m_instance;
104 std::unique_ptr<QPluginLoader> m_loader;
105 bool m_isBuiltin =
false;
108 bool m_isValid =
false;
109 bool m_isEnabled =
true;
112 static std::vector<Plugin> loadPlugins(QStringList paths);
114 LintResult lintFile(
const QString &filename,
const QString *fileContents,
const bool silent,
115 QJsonArray *json,
const QStringList &qmlImportPaths,
116 const QStringList &qmldirFiles,
const QStringList &resourceFiles,
117 const QList<QQmlJS::LoggerCategory> &categories,
118 const QQmlJS::HeuristicContextProperties &contextProperties = {});
120 LintResult lintModule(
const QString &uri,
const bool silent, QJsonArray *json,
121 const QStringList &qmlImportPaths,
const QStringList &resourceFiles);
123 FixResult applyFixes(QString *fixedCode,
bool silent);
125 const QQmlJSLogger *logger()
const {
return m_logger.get(); }
127 std::vector<Plugin> &plugins()
131 void setPlugins(std::vector<Plugin> plugins) { m_plugins = std::move(plugins); }
133 void setPluginsEnabled(
bool enablePlugins) { m_enablePlugins = enablePlugins; }
134 bool pluginsEnabled()
const {
return m_enablePlugins; }
136 void clearCache() { m_importer.clearCache(); }
139 void parseComments(QQmlJSLogger *logger,
const QList<QQmlJS::SourceLocation> &comments);
140 void processMessages(QJsonArray &warnings);
142 contextPropertiesFor(
const QString &fileName, QQmlJSResourceFileMapper *mapper,
143 const QQmlJS::HeuristicContextProperties &heuristicContextProperties);
145 bool m_useAbsolutePath;
146 bool m_enablePlugins;
147 QQmlJSImporter m_importer;
148 QScopedPointer<QQmlJSLogger> m_logger;
149 QString m_fileContents;
150 std::vector<Plugin> m_plugins;
151 QQmlToolingSettings m_userContextPropertySettings =
152 QQmlToolingSettings(QStringLiteral(
"contextProperties"));
153 QQmlToolingSettings::Searcher m_heuristicContextPropertySearcher =
154 QQmlToolingSettings::Searcher(QStringLiteral(
".qt/contextPropertyDump.ini"),
155 QStringLiteral(
"contextPropertyDump.ini"));