forked from qt-creator/qt-creator
Clang/ClangTools: Separate custom diagnostic configs
Add a separate pool of custom diagnostic configs for the ClangTools plugin. That is, the diagnostic configs in Menu: Tools > C++ > Code Model are not shared anymore with the configs at Menu: Tools > Analyzer > ClangTools On plugin initialization of ClangTools, move tidy/clazy related configs to ClangTools. Change-Id: Id06087a58b53e466a3d7bbac669550c5fbe9899d Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -39,7 +39,6 @@
|
||||
|
||||
#include <cpptools/builtincursorinfo.h>
|
||||
#include <cpptools/clangdiagnosticconfigsmodel.h>
|
||||
#include <cpptools/clangdiagnosticconfigsmodel.h>
|
||||
#include <cpptools/compileroptionsbuilder.h>
|
||||
#include <cpptools/cppcodemodelsettings.h>
|
||||
#include <cpptools/cppmodelmanager.h>
|
||||
@@ -480,8 +479,8 @@ private:
|
||||
ClangProjectSettings &projectSettings = getProjectSettings(m_projectPart.project);
|
||||
if (!projectSettings.useGlobalConfig()) {
|
||||
const Core::Id warningConfigId = projectSettings.warningConfigId();
|
||||
const CppTools::ClangDiagnosticConfigsModel configsModel(
|
||||
CppTools::codeModelSettings()->clangCustomDiagnosticConfigs());
|
||||
const CppTools::ClangDiagnosticConfigsModel configsModel
|
||||
= CppTools::diagnosticConfigsModel();
|
||||
if (configsModel.hasConfigWithId(warningConfigId)) {
|
||||
addDiagnosticOptionsForConfig(configsModel.configWithId(warningConfigId));
|
||||
return;
|
||||
@@ -500,42 +499,6 @@ private:
|
||||
: CppTools::UseBuildSystemWarnings::No;
|
||||
|
||||
m_options.append(diagnosticConfig.clangOptions());
|
||||
addClangTidyOptions(diagnosticConfig);
|
||||
addClazyOptions(diagnosticConfig.clazyChecks());
|
||||
}
|
||||
|
||||
void addClangTidyOptions(const CppTools::ClangDiagnosticConfig &diagnosticConfig)
|
||||
{
|
||||
using Mode = CppTools::ClangDiagnosticConfig::TidyMode;
|
||||
Mode tidyMode = diagnosticConfig.clangTidyMode();
|
||||
if (tidyMode == Mode::Disabled)
|
||||
return;
|
||||
|
||||
m_options.append(CppTools::XclangArgs({"-add-plugin", "clang-tidy"}));
|
||||
|
||||
if (tidyMode == Mode::File)
|
||||
return;
|
||||
|
||||
const QString checks = diagnosticConfig.clangTidyChecks();
|
||||
if (!checks.isEmpty())
|
||||
m_options.append(CppTools::XclangArgs({"-plugin-arg-clang-tidy", "-checks=" + checks}));
|
||||
}
|
||||
|
||||
void addClazyOptions(const QString &checks)
|
||||
{
|
||||
if (checks.isEmpty())
|
||||
return;
|
||||
|
||||
m_options.append(CppTools::XclangArgs({"-add-plugin",
|
||||
"clazy",
|
||||
"-plugin-arg-clazy",
|
||||
"enable-all-fixits",
|
||||
"-plugin-arg-clazy",
|
||||
"no-autowrite-fixits",
|
||||
"-plugin-arg-clazy",
|
||||
checks,
|
||||
"-plugin-arg-clazy",
|
||||
"ignore-included-files"}));
|
||||
}
|
||||
|
||||
void addGlobalDiagnosticOptions()
|
||||
|
||||
@@ -64,6 +64,17 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
|
||||
connect(m_ui.clangDiagnosticConfigsSelectionWidget,
|
||||
&ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
|
||||
this, &ClangProjectSettingsWidget::onCurrentWarningConfigChanged);
|
||||
connect(m_ui.clangDiagnosticConfigsSelectionWidget,
|
||||
&ClangDiagnosticConfigsSelectionWidget::diagnosticConfigsEdited,
|
||||
this, [this](const ClangDiagnosticConfigs &configs){
|
||||
QSharedPointer<CppCodeModelSettings> cmSettings = CppTools::codeModelSettings();
|
||||
const ClangDiagnosticConfigsModel configsModel = CppTools::diagnosticConfigsModel(configs);
|
||||
if (!configsModel.hasConfigWithId(cmSettings->clangDiagnosticConfigId()))
|
||||
cmSettings->resetClangDiagnosticConfigId();
|
||||
cmSettings->setClangCustomDiagnosticConfigs(configs);
|
||||
cmSettings->toSettings(Core::ICore::settings());
|
||||
refreshDiagnosticConfigsWidgetFromSettings();
|
||||
});
|
||||
|
||||
connect(m_ui.delayedTemplateParseCheckBox, &QCheckBox::toggled,
|
||||
this, &ClangProjectSettingsWidget::onDelayedTemplateParseClicked);
|
||||
@@ -146,7 +157,9 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
|
||||
|
||||
void ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings()
|
||||
{
|
||||
m_ui.clangDiagnosticConfigsSelectionWidget->refresh(configIdForProject(m_projectSettings));
|
||||
m_ui.clangDiagnosticConfigsSelectionWidget->refresh(CppTools::diagnosticConfigsModel(),
|
||||
configIdForProject(m_projectSettings),
|
||||
/*showTidyClazyUi=*/false);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -139,7 +139,7 @@ ClangDiagnosticConfig diagnosticConfig(ClangProjectSettings &projectSettings,
|
||||
currentConfigId = globalSettings.clangDiagnosticConfigId();
|
||||
|
||||
// Get config
|
||||
ClangDiagnosticConfigsModel configsModel(globalSettings.clangCustomDiagnosticConfigs());
|
||||
ClangDiagnosticConfigsModel configsModel = CppTools::diagnosticConfigsModel();
|
||||
QTC_ASSERT(configsModel.hasConfigWithId(currentConfigId), return {});
|
||||
return configsModel.configWithId(currentConfigId);
|
||||
}
|
||||
@@ -174,7 +174,7 @@ void disableDiagnosticInCurrentProjectConfig(const ClangBackEnd::DiagnosticConta
|
||||
|
||||
// Get config
|
||||
ClangDiagnosticConfig config = diagnosticConfig(projectSettings, *globalSettings);
|
||||
ClangDiagnosticConfigsModel configsModel(globalSettings->clangCustomDiagnosticConfigs());
|
||||
ClangDiagnosticConfigsModel configsModel = CppTools::diagnosticConfigsModel();
|
||||
|
||||
// Create copy if needed
|
||||
if (config.isReadOnly()) {
|
||||
|
||||
Reference in New Issue
Block a user