50 QQmlJSLinter(
const QStringList &importPaths,
const QStringList &extraPluginPaths = {},
51 bool useAbsolutePath =
false);
53 enum LintResult { FailedToOpen, FailedToParse, HasWarnings, HasErrors, LintSuccess };
54 enum FixResult { NothingToFix, FixError, FixSuccess };
56 class Q_QMLCOMPILER_EXPORT Plugin
58 Q_DISABLE_COPY(Plugin)
61 Plugin(Plugin &&plugin)
noexcept;
66 Plugin(
const QStaticPlugin &plugin);
69 const QString &name()
const {
return m_name; }
70 const QString &description()
const {
return m_description; }
71 const QString &version()
const {
return m_version; }
72 const QString &author()
const {
return m_author; }
73 const QList<QQmlJS::LoggerCategory> categories()
const
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;
107 bool m_isValid =
false;
108 bool m_isEnabled =
true;
111 static std::vector<Plugin> loadPlugins(QStringList paths);
113 LintResult lintFile(
const QString &filename,
const QString *fileContents,
const bool silent,
114 QJsonArray *json,
const QStringList &qmlImportPaths,
115 const QStringList &qmldirFiles,
const QStringList &resourceFiles,
116 const QList<QQmlJS::LoggerCategory> &categories,
117 const QQmlJS::HeuristicContextProperties &contextProperties = {});
119 LintResult lintModule(
const QString &uri,
const bool silent, QJsonArray *json,
120 const QStringList &qmlImportPaths,
const QStringList &resourceFiles);
122 FixResult applyFixes(QString *fixedCode,
bool silent);
124 const QQmlJSLogger *logger()
const {
return m_logger.get(); }
126 std::vector<Plugin> &plugins()
130 void setPlugins(std::vector<Plugin> plugins) { m_plugins = std::move(plugins); }
132 void setPluginsEnabled(
bool enablePlugins) { m_enablePlugins = enablePlugins; }
133 bool pluginsEnabled()
const {
return m_enablePlugins; }
135 void clearCache() { m_importer.clearCache(); }
138 LintResult lintFileImpl(
const QString &filename,
const QString *fileContents,
const bool silent,
139 QJsonArray *json,
const QStringList &qmlImportPaths,
140 const QStringList &qmldirFiles,
const QStringList &resourceFiles,
141 const QList<QQmlJS::LoggerCategory> &categories,
142 const QQmlJS::HeuristicContextProperties &heuristicContextProperties);
143 LintResult lintModuleImpl(
const QString &uri,
const bool silent, QJsonArray *json,
144 const QStringList &qmlImportPaths,
const QStringList &resourceFiles);
145 void setupLoggingCategoriesInLogger(
const QList<QQmlJS::LoggerCategory> &categories);
146 void parseComments(QQmlJSLogger *logger,
const QList<QQmlJS::SourceLocation> &comments);
147 void processMessages(QJsonArray &warnings);
149 contextPropertiesFor(
const QString &fileName, QQmlJSResourceFileMapper *mapper,
150 const QQmlJS::HeuristicContextProperties &heuristicContextProperties);
152 bool m_useAbsolutePath;
153 bool m_enablePlugins;
154 QQmlJSImporter m_importer;
155 QScopedPointer<QQmlJSLogger> m_logger;
156 QString m_fileContents;
157 std::vector<Plugin> m_plugins;
158 QQmlToolingSettings m_userContextPropertySettings =
159 QQmlToolingSettings(QStringLiteral(
"contextProperties"));
160 QQmlToolingSettings::Searcher m_heuristicContextPropertySearcher =
161 QQmlToolingSettings::Searcher(QStringLiteral(
".qt/contextPropertyDump.ini"),
162 QStringLiteral(
"contextPropertyDump.ini"));