diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2022-04-11 17:48:36 +0200 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2022-04-21 21:04:01 +0200 |
commit | 1552b00d1e17d774929f2aa35fff58afff409b17 (patch) | |
tree | 7b687adc191b49682550e90168a0acbf5868a212 /tools | |
parent | 28fd6bd25c1241acdaabc2f81f1d3e39c083396e (diff) |
qmllint: Add option to disable individual plugins
Adds a command line option and settings entry in order to
disable individual plugins. Previously you could only
disable all of them.
Fixes: QTBUG-102420
Change-Id: I5a35093c32f5f86eef1e31dd42b77c95e38bb01f
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmllint/main.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/tools/qmllint/main.cpp b/tools/qmllint/main.cpp index 45252245f5..791a29f839 100644 --- a/tools/qmllint/main.cpp +++ b/tools/qmllint/main.cpp @@ -163,11 +163,14 @@ All warnings can be set to three levels: QLatin1String("List all available plugins")); parser.addOption(listPluginsOption); - QCommandLineOption pluginsDisable(QStringList() << "disable-plugins", - QLatin1String("Disable all qmllint plugins")); + QCommandLineOption pluginsDisable( + QStringList() << "D" + << "disable-plugins", + QLatin1String("List of qmllint plugins to disable (all to disable all plugins)"), + QLatin1String("plugins")); parser.addOption(pluginsDisable); - const QString pluginsDisableSettings = QLatin1String("DisablePlugins"); - settings.addOption(pluginsDisableSettings, false); + const QString pluginsDisableSetting = QLatin1String("DisablePlugins"); + settings.addOption(pluginsDisableSetting); QCommandLineOption pluginPathsOption( QStringList() << "P" @@ -310,11 +313,27 @@ All warnings can be set to three levels: addAbsolutePaths(qmlImportPaths, settings.value(qmlImportPathsSetting).toStringList()); - const bool disablePlugins = parser.isSet(pluginsDisable) - || (settings.isSet(pluginsDisableSettings) - && settings.value(pluginsDisableSettings).toBool()); + QSet<QString> disabledPlugins; - linter.setPluginsEnabled(!disablePlugins); + if (parser.isSet(pluginsDisable)) { + for (const QString &plugin : parser.values(pluginsDisable)) + disabledPlugins << plugin.toLower(); + } + + if (settings.isSet(pluginsDisableSetting)) { + for (const QString &plugin : settings.value(pluginsDisableSetting).toStringList()) + disabledPlugins << plugin.toLower(); + } + + linter.setPluginsEnabled(!disabledPlugins.contains("all")); + + if (!linter.pluginsEnabled()) + continue; + + auto &plugins = linter.plugins(); + + for (auto &plugin : plugins) + plugin.setEnabled(!disabledPlugins.contains(plugin.name().toLower())); } const bool isFixing = parser.isSet(fixFile); |