aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-05-07 15:40:14 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-05-14 07:03:04 +0000
commit92fdbdc404271a4f8638f6831ada448ce830eb72 (patch)
treed1270b4327079a59d76b4e03079bce5e091885f1 /src
parent3737b6a12468ef4edf3eadf531203914d081e622 (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.cpp10
-rw-r--r--src/plugins/clangtools/clangtoolsconfigwidget.cpp21
-rw-r--r--src/plugins/clangtools/clangtoolsconfigwidget.ui65
-rw-r--r--src/plugins/clangtools/clangtoolssettings.cpp22
-rw-r--r--src/plugins/clangtools/clangtoolssettings.h8
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 &currentConfigId) {
+ 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