diff options
Diffstat (limited to 'src/plugins/clangtools/clangtoolssettings.cpp')
-rw-r--r-- | src/plugins/clangtools/clangtoolssettings.cpp | 149 |
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 |