summaryrefslogtreecommitdiff
path: root/src/plugins/clangtools/clangtoolssettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/clangtools/clangtoolssettings.cpp')
-rw-r--r--src/plugins/clangtools/clangtoolssettings.cpp149
1 files changed, 71 insertions, 78 deletions
diff --git a/src/plugins/clangtools/clangtoolssettings.cpp b/src/plugins/clangtools/clangtoolssettings.cpp
index 059f15ecbf..07b9592a8e 100644
--- a/src/plugins/clangtools/clangtoolssettings.cpp
+++ b/src/plugins/clangtools/clangtoolssettings.cpp
@@ -29,119 +29,112 @@
#include <coreplugin/icore.h>
-#include <utils/hostosinfo.h>
-#include <utils/qtcassert.h>
-
-#include <QFileInfo>
#include <QThread>
-static const char simultaneousProcessesKey[] = "simultaneousProcesses";
-static const char buildBeforeAnalysisKey[] = "buildBeforeAnalysis";
-static const char diagnosticConfigIdKey[] = "diagnosticConfigId";
+static const char clangTidyExecutableKey[] = "ClangTidyExecutable";
+static const char clazyStandaloneExecutableKey[] = "ClazyStandaloneExecutable";
-namespace ClangTools {
-namespace Internal {
+static const char parallelJobsKey[] = "ParallelJobs";
+static const char buildBeforeAnalysisKey[] = "BuildBeforeAnalysis";
-ClangToolsSettings::ClangToolsSettings()
-{
- readSettings();
-}
-
-ClangToolsSettings *ClangToolsSettings::instance()
-{
- static ClangToolsSettings instance;
- return &instance;
-}
+static const char oldDiagnosticConfigIdKey[] = "diagnosticConfigId";
-int ClangToolsSettings::savedSimultaneousProcesses() const
-{
- return m_savedSimultaneousProcesses;
-}
+namespace ClangTools {
+namespace Internal {
-int ClangToolsSettings::simultaneousProcesses() const
+RunSettings::RunSettings()
+ : m_parallelJobs(qMax(0, QThread::idealThreadCount() / 2))
{
- return m_simultaneousProcesses;
}
-void ClangToolsSettings::setSimultaneousProcesses(int processes)
+void RunSettings::fromMap(const QVariantMap &map, const QString &prefix)
{
- m_simultaneousProcesses = processes;
+ m_diagnosticConfigId = Core::Id::fromSetting(map.value(prefix + diagnosticConfigIdKey));
+ m_parallelJobs = map.value(prefix + parallelJobsKey).toInt();
+ m_buildBeforeAnalysis = map.value(prefix + buildBeforeAnalysisKey).toBool();
}
-bool ClangToolsSettings::savedBuildBeforeAnalysis() const
+void RunSettings::toMap(QVariantMap &map, const QString &prefix) const
{
- return m_savedBuildBeforeAnalysis;
+ map.insert(prefix + diagnosticConfigIdKey, m_diagnosticConfigId.toSetting());
+ map.insert(prefix + parallelJobsKey, m_parallelJobs);
+ map.insert(prefix + buildBeforeAnalysisKey, m_buildBeforeAnalysis);
}
-bool ClangToolsSettings::buildBeforeAnalysis() const
+ClangToolsSettings::ClangToolsSettings()
{
- return m_buildBeforeAnalysis;
+ readSettings();
}
-void ClangToolsSettings::setBuildBeforeAnalysis(bool build)
+ClangToolsSettings *ClangToolsSettings::instance()
{
- m_buildBeforeAnalysis = build;
+ static ClangToolsSettings instance;
+ return &instance;
}
-Core::Id ClangToolsSettings::savedDiagnosticConfigId() const
+static QVariantMap convertToMapFromVersionBefore410(QSettings *s)
{
- return m_savedDiagnosticConfigId;
-}
+ const char oldParallelJobsKey[] = "simultaneousProcesses";
+ const char oldBuildBeforeAnalysisKey[] = "buildBeforeAnalysis";
-Core::Id ClangToolsSettings::diagnosticConfigId() const
-{
- return m_diagnosticConfigId;
-}
+ QVariantMap map;
+ map.insert(diagnosticConfigIdKey, s->value(oldDiagnosticConfigIdKey));
+ map.insert(parallelJobsKey, s->value(oldParallelJobsKey));
+ map.insert(buildBeforeAnalysisKey, s->value(oldBuildBeforeAnalysisKey));
-void ClangToolsSettings::setDiagnosticConfigId(Core::Id id)
-{
- m_diagnosticConfigId = id;
-}
+ s->remove(oldDiagnosticConfigIdKey);
+ s->remove(oldParallelJobsKey);
+ s->remove(oldBuildBeforeAnalysisKey);
-void ClangToolsSettings::updateSavedBuildBeforeAnalysiIfRequired()
-{
- if (m_savedBuildBeforeAnalysis == m_buildBeforeAnalysis)
- return;
- m_savedBuildBeforeAnalysis = m_buildBeforeAnalysis;
- emit buildBeforeAnalysisChanged(m_savedBuildBeforeAnalysis);
+ return map;
}
void ClangToolsSettings::readSettings()
{
- QSettings *settings = Core::ICore::settings();
- settings->beginGroup(QLatin1String(Constants::SETTINGS_ID));
-
- const int defaultSimultaneousProcesses = qMax(0, QThread::idealThreadCount() / 2);
- m_savedSimultaneousProcesses = m_simultaneousProcesses
- = settings->value(QString(simultaneousProcessesKey),
- defaultSimultaneousProcesses).toInt();
-
- m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool();
-
- m_diagnosticConfigId = Core::Id::fromSetting(settings->value(QString(diagnosticConfigIdKey)));
- if (!m_diagnosticConfigId.isValid())
- m_diagnosticConfigId = "Builtin.TidyAndClazy";
-
- m_savedDiagnosticConfigId = m_diagnosticConfigId;
-
- updateSavedBuildBeforeAnalysiIfRequired();
-
- settings->endGroup();
+ QSettings *s = Core::ICore::settings();
+ s->beginGroup(Constants::SETTINGS_ID);
+ m_clangTidyExecutable = s->value(clangTidyExecutableKey).toString();
+ m_clazyStandaloneExecutable = s->value(clazyStandaloneExecutableKey).toString();
+
+ bool write = false;
+
+ QVariantMap map;
+ if (!s->value(oldDiagnosticConfigIdKey).isNull()) {
+ map = convertToMapFromVersionBefore410(s);
+ write = true;
+ } else {
+ QVariantMap defaults;
+ defaults.insert(diagnosticConfigIdKey, m_runSettings.diagnosticConfigId().toSetting());
+ defaults.insert(parallelJobsKey, m_runSettings.parallelJobs());
+ defaults.insert(buildBeforeAnalysisKey, m_runSettings.buildBeforeAnalysis());
+ map = defaults;
+ for (QVariantMap::ConstIterator it = defaults.constBegin(); it != defaults.constEnd(); ++it)
+ map.insert(it.key(), s->value(it.key(), it.value()));
+ }
+
+ // Run settings
+ m_runSettings.fromMap(map);
+
+ s->endGroup();
+
+ if (write)
+ writeSettings();
}
void ClangToolsSettings::writeSettings()
{
- QSettings *settings = Core::ICore::settings();
- settings->beginGroup(QString(Constants::SETTINGS_ID));
- settings->setValue(QString(simultaneousProcessesKey), m_simultaneousProcesses);
- settings->setValue(QString(buildBeforeAnalysisKey), m_buildBeforeAnalysis);
- settings->setValue(QString(diagnosticConfigIdKey), m_diagnosticConfigId.toSetting());
+ QSettings *s = Core::ICore::settings();
+ s->beginGroup(Constants::SETTINGS_ID);
+
+ s->setValue(clangTidyExecutableKey, m_clangTidyExecutable);
+ s->setValue(clazyStandaloneExecutableKey, m_clazyStandaloneExecutable);
- m_savedSimultaneousProcesses = m_simultaneousProcesses;
- m_savedDiagnosticConfigId = m_diagnosticConfigId;
- updateSavedBuildBeforeAnalysiIfRequired();
+ QVariantMap map;
+ m_runSettings.toMap(map);
+ for (QVariantMap::ConstIterator it = map.constBegin(); it != map.constEnd(); ++it)
+ s->setValue(it.key(), it.value());
- settings->endGroup();
+ s->endGroup();
}
} // namespace Internal