forked from qt-creator/qt-creator
Clang: Allow to forward warnings flags from build system
Change-Id: I47ebb1ce4f3b5544408eb1d0f891ed5090394282 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#include <projectexplorer/selectablefilesmodel.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/executeondestruction.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
@@ -611,7 +612,7 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const Core::Id &confi
|
||||
this, &ClangDiagnosticConfigsWidget::onCopyButtonClicked);
|
||||
connect(m_ui->removeButton, &QPushButton::clicked,
|
||||
this, &ClangDiagnosticConfigsWidget::onRemoveButtonClicked);
|
||||
connectDiagnosticOptionsChanged();
|
||||
connectClangOnlyOptionsChanged();
|
||||
|
||||
connect(m_tidyChecks->checksPrefixesTree,
|
||||
&QTreeView::clicked,
|
||||
@@ -734,14 +735,17 @@ static QStringList normalizeDiagnosticInputOptions(const QString &options)
|
||||
return options.simplified().split(QLatin1Char(' '), QString::SkipEmptyParts);
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited()
|
||||
void ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged()
|
||||
{
|
||||
// Clean up input
|
||||
const bool useBuildSystemWarnings = m_clangBaseChecks->useFlagsFromBuildSystemCheckBox
|
||||
->isChecked();
|
||||
|
||||
// Clean up options input
|
||||
const QString diagnosticOptions = m_clangBaseChecks->diagnosticOptionsTextEdit->document()
|
||||
->toPlainText();
|
||||
const QStringList normalizedOptions = normalizeDiagnosticInputOptions(diagnosticOptions);
|
||||
|
||||
// Validate
|
||||
// Validate options input
|
||||
const QString errorMessage = validateDiagnosticOptions(normalizedOptions);
|
||||
updateValidityWidgets(errorMessage);
|
||||
if (!errorMessage.isEmpty()) {
|
||||
@@ -754,6 +758,7 @@ void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited()
|
||||
// Commit valid changes
|
||||
ClangDiagnosticConfig updatedConfig = selectedConfig();
|
||||
updatedConfig.setClangOptions(normalizedOptions);
|
||||
updatedConfig.setUseBuildSystemWarnings(useBuildSystemWarnings);
|
||||
updateConfig(updatedConfig);
|
||||
}
|
||||
|
||||
@@ -793,11 +798,17 @@ void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox()
|
||||
if (isConfigChooserEmpty())
|
||||
return;
|
||||
|
||||
disconnectClangOnlyOptionsChanged();
|
||||
Utils::ExecuteOnDestruction e([this]() { connectClangOnlyOptionsChanged(); });
|
||||
|
||||
const ClangDiagnosticConfig &config = selectedConfig();
|
||||
|
||||
// Update main button row
|
||||
m_ui->removeButton->setEnabled(!config.isReadOnly());
|
||||
|
||||
// Update check box
|
||||
m_clangBaseChecks->useFlagsFromBuildSystemCheckBox->setChecked(config.useBuildSystemWarnings());
|
||||
|
||||
// Update Text Edit
|
||||
const QString options = m_notAcceptedOptions.contains(config.id())
|
||||
? m_notAcceptedOptions.value(config.id())
|
||||
@@ -894,11 +905,8 @@ bool ClangDiagnosticConfigsWidget::isConfigChooserEmpty() const
|
||||
|
||||
void ClangDiagnosticConfigsWidget::setDiagnosticOptions(const QString &options)
|
||||
{
|
||||
if (options != m_clangBaseChecks->diagnosticOptionsTextEdit->document()->toPlainText()) {
|
||||
disconnectDiagnosticOptionsChanged();
|
||||
if (options != m_clangBaseChecks->diagnosticOptionsTextEdit->document()->toPlainText())
|
||||
m_clangBaseChecks->diagnosticOptionsTextEdit->document()->setPlainText(options);
|
||||
connectDiagnosticOptionsChanged();
|
||||
}
|
||||
|
||||
const QString errorMessage
|
||||
= validateDiagnosticOptions(normalizeDiagnosticInputOptions(options));
|
||||
@@ -968,20 +976,28 @@ void ClangDiagnosticConfigsWidget::disconnectConfigChooserCurrentIndex()
|
||||
this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfigsWidget::connectDiagnosticOptionsChanged()
|
||||
void ClangDiagnosticConfigsWidget::connectClangOnlyOptionsChanged()
|
||||
{
|
||||
connect(m_clangBaseChecks->useFlagsFromBuildSystemCheckBox,
|
||||
&QCheckBox::stateChanged,
|
||||
this,
|
||||
&ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged);
|
||||
connect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(),
|
||||
&QTextDocument::contentsChanged,
|
||||
this,
|
||||
&ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
|
||||
&ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged);
|
||||
}
|
||||
|
||||
void ClangDiagnosticConfigsWidget::disconnectDiagnosticOptionsChanged()
|
||||
void ClangDiagnosticConfigsWidget::disconnectClangOnlyOptionsChanged()
|
||||
{
|
||||
disconnect(m_clangBaseChecks->useFlagsFromBuildSystemCheckBox,
|
||||
&QCheckBox::stateChanged,
|
||||
this,
|
||||
&ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged);
|
||||
disconnect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(),
|
||||
&QTextDocument::contentsChanged,
|
||||
this,
|
||||
&ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
|
||||
&ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged);
|
||||
}
|
||||
|
||||
ClangDiagnosticConfigs ClangDiagnosticConfigsWidget::customConfigs() const
|
||||
|
||||
Reference in New Issue
Block a user