forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -25,10 +25,13 @@
|
|||||||
|
|
||||||
#include "clangtidyclazyrunner.h"
|
#include "clangtidyclazyrunner.h"
|
||||||
|
|
||||||
|
#include "clangtoolssettings.h"
|
||||||
|
|
||||||
#include <cpptools/cppcodemodelsettings.h>
|
#include <cpptools/cppcodemodelsettings.h>
|
||||||
#include <cpptools/cpptoolsreuse.h>
|
#include <cpptools/cpptoolsreuse.h>
|
||||||
|
|
||||||
#include <utils/synchronousprocess.h>
|
#include <utils/synchronousprocess.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@@ -75,7 +78,12 @@ QStringList ClangTidyClazyRunner::constructCommandLineArguments(const QStringLis
|
|||||||
<< QString("-serialize-diagnostics")
|
<< QString("-serialize-diagnostics")
|
||||||
<< QString(m_logFile);
|
<< 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();
|
const ClangDiagnosticConfig::TidyMode tidyMode = config.clangTidyMode();
|
||||||
if (tidyMode != ClangDiagnosticConfig::TidyMode::Disabled) {
|
if (tidyMode != ClangDiagnosticConfig::TidyMode::Disabled) {
|
||||||
|
|||||||
@@ -28,6 +28,10 @@
|
|||||||
|
|
||||||
#include "clangtoolsutils.h"
|
#include "clangtoolsutils.h"
|
||||||
|
|
||||||
|
#include <cpptools/clangdiagnosticconfigswidget.h>
|
||||||
|
#include <cpptools/cppcodemodelsettings.h>
|
||||||
|
#include <cpptools/cpptoolsreuse.h>
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
@@ -55,6 +59,23 @@ ClangToolsConfigWidget::ClangToolsConfigWidget(
|
|||||||
connect(m_ui->buildBeforeAnalysis, &QCheckBox::toggled, [settings](bool checked) {
|
connect(m_ui->buildBeforeAnalysis, &QCheckBox::toggled, [settings](bool checked) {
|
||||||
settings->setBuildBeforeAnalysis(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()
|
ClangToolsConfigWidget::~ClangToolsConfigWidget()
|
||||||
|
|||||||
@@ -19,16 +19,23 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>General</string>
|
<string>General</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item row="1" column="0">
|
<item>
|
||||||
|
<widget class="QCheckBox" name="buildBeforeAnalysis">
|
||||||
|
<property name="text">
|
||||||
|
<string>Build the project before analysis</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="processesLayout">
|
||||||
|
<item>
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Simultaneous processes:</string>
|
<string>Simultaneous processes:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QSpinBox" name="simultaneousProccessesSpinBox">
|
<widget class="QSpinBox" name="simultaneousProccessesSpinBox">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
@@ -54,13 +61,40 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<widget class="QCheckBox" name="buildBeforeAnalysis">
|
<layout class="QHBoxLayout" name="clangDiagnosticsLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="clangDiagnosticsLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Build the project before analysis</string>
|
<string>Diagnostic Configuration:</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -79,6 +113,13 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>CppTools::ClangDiagnosticConfigsSelectionWidget</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>cpptools/clangdiagnosticconfigsselectionwidget.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
static const char simultaneousProcessesKey[] = "simultaneousProcesses";
|
static const char simultaneousProcessesKey[] = "simultaneousProcesses";
|
||||||
static const char buildBeforeAnalysisKey[] = "buildBeforeAnalysis";
|
static const char buildBeforeAnalysisKey[] = "buildBeforeAnalysis";
|
||||||
|
static const char diagnosticConfigIdKey[] = "diagnosticConfigId";
|
||||||
|
|
||||||
namespace ClangTools {
|
namespace ClangTools {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -82,6 +83,21 @@ void ClangToolsSettings::setBuildBeforeAnalysis(bool build)
|
|||||||
m_buildBeforeAnalysis = 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()
|
void ClangToolsSettings::updateSavedBuildBeforeAnalysiIfRequired()
|
||||||
{
|
{
|
||||||
if (m_savedBuildBeforeAnalysis == m_buildBeforeAnalysis)
|
if (m_savedBuildBeforeAnalysis == m_buildBeforeAnalysis)
|
||||||
@@ -101,6 +117,10 @@ void ClangToolsSettings::readSettings()
|
|||||||
defaultSimultaneousProcesses).toInt();
|
defaultSimultaneousProcesses).toInt();
|
||||||
|
|
||||||
m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool();
|
m_buildBeforeAnalysis = settings->value(QString(buildBeforeAnalysisKey), true).toBool();
|
||||||
|
|
||||||
|
m_savedDiagnosticConfigId = m_diagnosticConfigId
|
||||||
|
= Core::Id::fromSetting(settings->value(QString(diagnosticConfigIdKey)));
|
||||||
|
|
||||||
updateSavedBuildBeforeAnalysiIfRequired();
|
updateSavedBuildBeforeAnalysiIfRequired();
|
||||||
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
@@ -112,8 +132,10 @@ void ClangToolsSettings::writeSettings()
|
|||||||
settings->beginGroup(QString(Constants::SETTINGS_ID));
|
settings->beginGroup(QString(Constants::SETTINGS_ID));
|
||||||
settings->setValue(QString(simultaneousProcessesKey), m_simultaneousProcesses);
|
settings->setValue(QString(simultaneousProcessesKey), m_simultaneousProcesses);
|
||||||
settings->setValue(QString(buildBeforeAnalysisKey), m_buildBeforeAnalysis);
|
settings->setValue(QString(buildBeforeAnalysisKey), m_buildBeforeAnalysis);
|
||||||
|
settings->setValue(QString(diagnosticConfigIdKey), m_diagnosticConfigId.toSetting());
|
||||||
|
|
||||||
m_savedSimultaneousProcesses = m_simultaneousProcesses;
|
m_savedSimultaneousProcesses = m_simultaneousProcesses;
|
||||||
|
m_savedDiagnosticConfigId = m_diagnosticConfigId;
|
||||||
updateSavedBuildBeforeAnalysiIfRequired();
|
updateSavedBuildBeforeAnalysiIfRequired();
|
||||||
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <coreplugin/id.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
@@ -41,6 +43,7 @@ public:
|
|||||||
|
|
||||||
int savedSimultaneousProcesses() const;
|
int savedSimultaneousProcesses() const;
|
||||||
bool savedBuildBeforeAnalysis() const;
|
bool savedBuildBeforeAnalysis() const;
|
||||||
|
Core::Id savedDiagnosticConfigId() const;
|
||||||
|
|
||||||
int simultaneousProcesses() const;
|
int simultaneousProcesses() const;
|
||||||
void setSimultaneousProcesses(int processes);
|
void setSimultaneousProcesses(int processes);
|
||||||
@@ -48,6 +51,9 @@ public:
|
|||||||
int buildBeforeAnalysis() const;
|
int buildBeforeAnalysis() const;
|
||||||
void setBuildBeforeAnalysis(bool build);
|
void setBuildBeforeAnalysis(bool build);
|
||||||
|
|
||||||
|
Core::Id diagnosticConfigId() const;
|
||||||
|
void setDiagnosticConfigId(Core::Id id);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void buildBeforeAnalysisChanged(bool checked) const;
|
void buildBeforeAnalysisChanged(bool checked) const;
|
||||||
|
|
||||||
@@ -61,6 +67,8 @@ private:
|
|||||||
int m_savedSimultaneousProcesses = -1;
|
int m_savedSimultaneousProcesses = -1;
|
||||||
bool m_buildBeforeAnalysis = false;
|
bool m_buildBeforeAnalysis = false;
|
||||||
bool m_savedBuildBeforeAnalysis= false;
|
bool m_savedBuildBeforeAnalysis= false;
|
||||||
|
Core::Id m_diagnosticConfigId;
|
||||||
|
Core::Id m_savedDiagnosticConfigId;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
Reference in New Issue
Block a user