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 isValid()
const {
return m_isValid; }
77 bool isInternal()
const
82 bool isEnabled()
const
86 void setEnabled(
bool isEnabled)
88 m_isEnabled = isEnabled;
92 friend class QQmlJSLinter;
94 bool parseMetaData(
const QJsonObject &metaData, QString pluginName);
97 QString m_description;
101 QList<QQmlJS::LoggerCategory> m_categories;
102 QQmlSA::LintPlugin *m_instance;
103 std::unique_ptr<QPluginLoader> m_loader;
106 bool m_isValid =
false;
107 bool m_isEnabled =
true;
110 static std::vector<Plugin> loadPlugins(QStringList paths);
112 LintResult lintFile(
const QString &filename,
const QString *fileContents,
const bool silent,
113 QJsonArray *json,
const QStringList &qmlImportPaths,
114 const QStringList &qmldirFiles,
const QStringList &resourceFiles,
115 const QList<QQmlJS::LoggerCategory> &categories,
116 const QQmlJS::HeuristicContextProperties &contextProperties = {});
118 LintResult lintModule(
const QString &uri,
const bool silent, QJsonArray *json,
119 const QStringList &qmlImportPaths,
const QStringList &resourceFiles);
121 FixResult applyFixes(QString *fixedCode,
bool silent);
123 const QQmlJSLogger *logger()
const {
return m_logger.get(); }
125 std::vector<Plugin> &plugins()
129 void setPlugins(std::vector<Plugin> plugins) { m_plugins = std::move(plugins); }
131 void setPluginsEnabled(
bool enablePlugins) { m_enablePlugins = enablePlugins; }
132 bool pluginsEnabled()
const {
return m_enablePlugins; }
134 void clearCache() { m_importer.clearCache(); }
137 void parseComments(QQmlJSLogger *logger,
const QList<QQmlJS::SourceLocation> &comments);
138 void processMessages(QJsonArray &warnings);
140 contextPropertiesFor(
const QString &fileName, QQmlJSResourceFileMapper *mapper,
141 const QQmlJS::HeuristicContextProperties &heuristicContextProperties);
143 bool m_useAbsolutePath;
144 bool m_enablePlugins;
145 QQmlJSImporter m_importer;
146 QScopedPointer<QQmlJSLogger> m_logger;
147 QString m_fileContents;
148 std::vector<Plugin> m_plugins;
149 QQmlToolingSettings m_userContextPropertySettings =
150 QQmlToolingSettings(QStringLiteral(
"contextProperties"));
151 QQmlToolingSettings::Searcher m_heuristicContextPropertySearcher =
152 QQmlToolingSettings::Searcher(QStringLiteral(
".qt/contextPropertyDump.ini"),
153 QStringLiteral(
"contextPropertyDump.ini"));