diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-05-07 15:40:14 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-05-14 07:03:04 +0000 |
commit | 92fdbdc404271a4f8638f6831ada448ce830eb72 (patch) | |
tree | d1270b4327079a59d76b4e03079bce5e091885f1 /src | |
parent | 3737b6a12468ef4edf3eadf531203914d081e622 (diff) |
ClangTools: Use separate diagnostic settings for ClangTools
Share diagnostic configuration profiles between
ClangTools and ClangCodeModel but keep the unique
configuration index for each of them.
Change-Id: I86d95f7f220e929d60a53f3633167adfcd62a2da
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/clangtools/clangtidyclazyrunner.cpp | 10 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsconfigwidget.cpp | 21 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolsconfigwidget.ui | 65 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolssettings.cpp | 22 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtoolssettings.h | 8 |
5 files changed, 113 insertions, 13 deletions
diff --git a/src/plugins/clangtools/clangtidyclazyrunner.cpp b/src/plugins/clangtools/clangtidyclazyrunner.cpp index c3418525c4..9c524cf2c5 100644 --- a/src/plugins/clangtools/clangtidyclazyrunner.cpp +++ b/src/plugins/clangtools/clangtidyclazyrunner.cpp @@ -25,10 +25,13 @@ #include "clangtidyclazyrunner.h" +#include "clangtoolssettings.h" + #include <cpptools/cppcodemodelsettings.h> #include <cpptools/cpptoolsreuse.h> #include <utils/synchronousprocess.h> +#include <utils/qtcassert.h> #include <QDebug> #include <QDir> @@ -75,7 +78,12 @@ QStringList ClangTidyClazyRunner::constructCommandLineArguments(const QStringLis << QString("-serialize-diagnostics") << QString(m_logFile); - const ClangDiagnosticConfig config = CppTools::codeModelSettings()->clangDiagnosticConfig(); + const ClangDiagnosticConfigsModel configsModel( + CppTools::codeModelSettings()->clangCustomDiagnosticConfigs()); + const Core::Id configId = ClangToolsSettings::instance()->savedDiagnosticConfigId(); + QTC_ASSERT(configsModel.hasConfigWithId(configId), return arguments;); + + const ClangDiagnosticConfig &config = configsModel.configWithId(configId); const ClangDiagnosticConfig::TidyMode tidyMode = config.clangTidyMode(); if (tidyMode != ClangDiagnosticConfig::TidyMode::Disabled) { diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.cpp b/src/plugins/clangtools/clangtoolsconfigwidget.cpp index d99c81c6ac..45e7b4041c 100644 --- a/src/plugins/clangtools/clangtoolsconfigwidget.cpp +++ b/src/plugins/clangtools/clangtoolsconfigwidget.cpp @@ -28,6 +28,10 @@ #include "clangtoolsutils.h" +#include <cpptools/clangdiagnosticconfigswidget.h> +#include <cpptools/cppcodemodelsettings.h> +#include <cpptools/cpptoolsreuse.h> + #include <QDir> #include <QThread> @@ -55,6 +59,23 @@ ClangToolsConfigWidget::ClangToolsConfigWidget( connect(m_ui->buildBeforeAnalysis, &QCheckBox::toggled, [settings](bool checked) { settings->setBuildBeforeAnalysis(checked); }); + + m_ui->clangDiagnosticConfigsSelectionWidget->refresh(settings->savedDiagnosticConfigId()); + + CppTools::connectToClangDiagnosticConfigsDialog(m_ui->manageButton); + + connect(m_ui->clangDiagnosticConfigsSelectionWidget, + &CppTools::ClangDiagnosticConfigsSelectionWidget::currentConfigChanged, + this, [this](const Core::Id ¤tConfigId) { + m_settings->setDiagnosticConfigId(currentConfigId); + }); + + connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed, + this, [this]() { + // Settings were applied so apply also the current selection if possible. + m_ui->clangDiagnosticConfigsSelectionWidget->refresh(m_settings->diagnosticConfigId()); + m_settings->writeSettings(); + }); } ClangToolsConfigWidget::~ClangToolsConfigWidget() diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.ui b/src/plugins/clangtools/clangtoolsconfigwidget.ui index 2f7e41e5b5..6d78aad6f4 100644 --- a/src/plugins/clangtools/clangtoolsconfigwidget.ui +++ b/src/plugins/clangtools/clangtoolsconfigwidget.ui @@ -19,16 +19,23 @@ <property name="title"> <string>General</string> </property> - <layout class="QFormLayout" name="formLayout"> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="buildBeforeAnalysis"> <property name="text"> - <string>Simultaneous processes:</string> + <string>Build the project before analysis</string> </property> </widget> </item> - <item row="1" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <layout class="QHBoxLayout" name="processesLayout"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Simultaneous processes:</string> + </property> + </widget> + </item> <item> <widget class="QSpinBox" name="simultaneousProccessesSpinBox"> <property name="minimum"> @@ -54,12 +61,39 @@ </item> </layout> </item> - <item row="0" column="0"> - <widget class="QCheckBox" name="buildBeforeAnalysis"> - <property name="text"> - <string>Build the project before analysis</string> - </property> - </widget> + <item> + <layout class="QHBoxLayout" name="clangDiagnosticsLayout"> + <item> + <widget class="QLabel" name="clangDiagnosticsLabel"> + <property name="text"> + <string>Diagnostic Configuration:</string> + </property> + </widget> + </item> + <item> + <widget class="CppTools::ClangDiagnosticConfigsSelectionWidget" name="clangDiagnosticConfigsSelectionWidget" native="true"/> + </item> + <item> + <widget class="QPushButton" name="manageButton"> + <property name="text"> + <string>Manage...</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> </item> </layout> </widget> @@ -79,6 +113,13 @@ </item> </layout> </widget> + <customwidgets> + <customwidget> + <class>CppTools::ClangDiagnosticConfigsSelectionWidget</class> + <extends>QWidget</extends> + <header>cpptools/clangdiagnosticconfigsselectionwidget.h</header> + </customwidget> + </customwidgets> <resources/> <connections/> </ui> diff --git a/src/plugins/clangtools/clangtoolssettings.cpp b/src/plugins/clangtools/clangtoolssettings.cpp index af4fa26336..87b00d9d64 100644 --- a/src/plugins/clangtools/clangtoolssettings.cpp +++ b/src/plugins/clangtools/clangtoolssettings.cpp @@ -37,6 +37,7 @@ static const char simultaneousProcessesKey[] = "simultaneousProcesses"; static const char buildBeforeAnalysisKey[] = "buildBeforeAnalysis"; +static const char diagnosticConfigIdKey[] = "diagnosticConfigId"; namespace ClangTools { namespace Internal { @@ -82,6 +83,21 @@ void ClangToolsSettings::setBuildBeforeAnalysis(bool build) m_buildBeforeAnalysis = build; } +Core::Id ClangToolsSettings::savedDiagnosticConfigId() const +{ + return m_savedDiagnosticConfigId; +} + +Core::Id ClangToolsSettings::diagnosticConfigId() const +{ + return m_diagnosticConfigId; +} + +void ClangToolsSettings::setDiagnosticConfigId(Core::Id id) +{ + m_diagnosticConfigId = id; +} + void ClangToolsSettings::updateSavedBuildBeforeAnalysiIfRequired() { if (m_savedBuildBeforeAnalysis == m_buildBeforeAnalysis) @@ -101,6 +117,10 @@ void ClangToolsSettings::readSettings() defaultSimultaneousProcesses).toInt(); m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool(); + + m_savedDiagnosticConfigId = m_diagnosticConfigId + = Core::Id::fromSetting(settings->value(QString(diagnosticConfigIdKey))); + updateSavedBuildBeforeAnalysiIfRequired(); settings->endGroup(); @@ -112,8 +132,10 @@ void ClangToolsSettings::writeSettings() 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()); m_savedSimultaneousProcesses = m_simultaneousProcesses; + m_savedDiagnosticConfigId = m_diagnosticConfigId; updateSavedBuildBeforeAnalysiIfRequired(); settings->endGroup(); diff --git a/src/plugins/clangtools/clangtoolssettings.h b/src/plugins/clangtools/clangtoolssettings.h index 1bc72c968e..8d3168338d 100644 --- a/src/plugins/clangtools/clangtoolssettings.h +++ b/src/plugins/clangtools/clangtoolssettings.h @@ -25,6 +25,8 @@ #pragma once +#include <coreplugin/id.h> + #include <QObject> #include <QString> @@ -41,6 +43,7 @@ public: int savedSimultaneousProcesses() const; bool savedBuildBeforeAnalysis() const; + Core::Id savedDiagnosticConfigId() const; int simultaneousProcesses() const; void setSimultaneousProcesses(int processes); @@ -48,6 +51,9 @@ public: int buildBeforeAnalysis() const; void setBuildBeforeAnalysis(bool build); + Core::Id diagnosticConfigId() const; + void setDiagnosticConfigId(Core::Id id); + signals: void buildBeforeAnalysisChanged(bool checked) const; @@ -61,6 +67,8 @@ private: int m_savedSimultaneousProcesses = -1; bool m_buildBeforeAnalysis = false; bool m_savedBuildBeforeAnalysis= false; + Core::Id m_diagnosticConfigId; + Core::Id m_savedDiagnosticConfigId; }; } // namespace Internal |