diff --git a/src/plugins/cppcheck/cppcheckmanualrundialog.cpp b/src/plugins/cppcheck/cppcheckmanualrundialog.cpp index 35a057ccffd..f5d5f687581 100644 --- a/src/plugins/cppcheck/cppcheckmanualrundialog.cpp +++ b/src/plugins/cppcheck/cppcheckmanualrundialog.cpp @@ -52,7 +52,9 @@ ManualRunDialog::ManualRunDialog(const ProjectExplorer::Project *project) analyzeButton->setEnabled(m_model->hasCheckedFiles()); }); - auto optionsWidget = settings().layouter()().emerge(); + m_manualRunSettings.readSettings(); + m_manualRunSettings.setAutoApply(true); + auto optionsWidget = m_manualRunSettings.layouter()().emerge(); auto layout = new QVBoxLayout(this); layout->addWidget(optionsWidget); diff --git a/src/plugins/cppcheck/cppcheckmanualrundialog.h b/src/plugins/cppcheck/cppcheckmanualrundialog.h index 76206578e34..fe5b920ee23 100644 --- a/src/plugins/cppcheck/cppcheckmanualrundialog.h +++ b/src/plugins/cppcheck/cppcheckmanualrundialog.h @@ -3,6 +3,8 @@ #pragma once +#include "cppchecksettings.h" + #include namespace Utils { @@ -25,8 +27,10 @@ public: Utils::FilePaths filePaths() const; QSize sizeHint() const override; + const CppcheckSettings &manualRunSettings() const { return m_manualRunSettings; } private: ProjectExplorer::SelectableFilesFromDirModel *m_model; + CppcheckSettings m_manualRunSettings; }; } // Cppcheck::Internal diff --git a/src/plugins/cppcheck/cppcheckplugin.cpp b/src/plugins/cppcheck/cppcheckplugin.cpp index 30ee2c2d67c..5bc99e54efb 100644 --- a/src/plugins/cppcheck/cppcheckplugin.cpp +++ b/src/plugins/cppcheck/cppcheckplugin.cpp @@ -56,9 +56,9 @@ public: CppcheckPluginPrivate::CppcheckPluginPrivate() { - tool.updateOptions(); + tool.updateOptions(settings()); connect(&settings(), &AspectContainer::changed, this, [this] { - tool.updateOptions(); + tool.updateOptions(settings()); trigger.recheck(); }); @@ -112,8 +112,6 @@ void CppcheckPluginPrivate::startManualRun() if (!project) return; - manualRunTool.updateOptions(); - ManualRunDialog dialog(project); if (dialog.exec() == ManualRunDialog::Rejected) return; @@ -125,7 +123,7 @@ void CppcheckPluginPrivate::startManualRun() return; manualRunTool.setProject(project); - manualRunTool.updateOptions(); + manualRunTool.updateOptions(dialog.manualRunSettings()); manualRunTool.check(files); perspective.select(); } diff --git a/src/plugins/cppcheck/cppchecktool.cpp b/src/plugins/cppcheck/cppchecktool.cpp index 85a17d92df4..e91e5a2ca05 100644 --- a/src/plugins/cppcheck/cppchecktool.cpp +++ b/src/plugins/cppcheck/cppchecktool.cpp @@ -39,10 +39,10 @@ CppcheckTool::CppcheckTool(CppcheckDiagnosticManager &manager, const Id &progres CppcheckTool::~CppcheckTool() = default; -void CppcheckTool::updateOptions() +void CppcheckTool::updateOptions(const CppcheckSettings &settings) { m_filters.clear(); - for (const QString &pattern : settings().ignoredPatterns().split(',')) { + for (const QString &pattern : settings.ignoredPatterns().split(',')) { const QString trimmedPattern = pattern.trimmed(); if (trimmedPattern.isEmpty()) continue; @@ -52,56 +52,54 @@ void CppcheckTool::updateOptions() m_filters.push_back(re); } - updateArguments(); + updateArguments(settings); } void CppcheckTool::setProject(ProjectExplorer::Project *project) { m_project = project; - updateArguments(); + updateArguments(settings()); } -void CppcheckTool::updateArguments() +void CppcheckTool::updateArguments(const CppcheckSettings &settings) { if (!m_project) return; m_cachedAdditionalArguments.clear(); - CppcheckSettings &s = settings(); - QStringList arguments; - if (!s.customArguments().isEmpty()) { + if (!settings.customArguments().isEmpty()) { Utils::MacroExpander *expander = Utils::globalMacroExpander(); - const QString expanded = expander->expand(s.customArguments()); + const QString expanded = expander->expand(settings.customArguments()); arguments.push_back(expanded); } - if (s.warning()) + if (settings.warning()) arguments.push_back("--enable=warning"); - if (s.style()) + if (settings.style()) arguments.push_back("--enable=style"); - if (s.performance()) + if (settings.performance()) arguments.push_back("--enable=performance"); - if (s.portability()) + if (settings.portability()) arguments.push_back("--enable=portability"); - if (s.information()) + if (settings.information()) arguments.push_back("--enable=information"); - if (s.unusedFunction()) + if (settings.unusedFunction()) arguments.push_back("--enable=unusedFunction"); - if (s.missingInclude()) + if (settings.missingInclude()) arguments.push_back("--enable=missingInclude"); - if (s.inconclusive()) + if (settings.inconclusive()) arguments.push_back("--inconclusive"); - if (s.forceDefines()) + if (settings.forceDefines()) arguments.push_back("--force"); - if (!s.unusedFunction() && !s.customArguments().contains("-j ")) + if (!settings.unusedFunction() && !settings.customArguments().contains("-j ")) arguments.push_back("-j " + QString::number(QThread::idealThreadCount())); arguments.push_back("--template=\"{file},{line},{severity},{id},{message}\""); - m_runner->reconfigure(s.binary.effectiveBinary(), arguments.join(' ')); + m_runner->reconfigure(settings.binary.effectiveBinary(), arguments.join(' ')); } QStringList CppcheckTool::additionalArguments(const CppEditor::ProjectPart &part) const diff --git a/src/plugins/cppcheck/cppchecktool.h b/src/plugins/cppcheck/cppchecktool.h index e8e61efaef9..cf36bb18525 100644 --- a/src/plugins/cppcheck/cppchecktool.h +++ b/src/plugins/cppcheck/cppchecktool.h @@ -24,6 +24,7 @@ namespace Cppcheck::Internal { class CppcheckRunner; class CppcheckDiagnosticManager; +class CppcheckSettings; class CppcheckTool final : public QObject { @@ -33,7 +34,7 @@ public: CppcheckTool(CppcheckDiagnosticManager &manager, const Utils::Id &progressId); ~CppcheckTool() override; - void updateOptions(); + void updateOptions(const CppcheckSettings &settings); void setProject(ProjectExplorer::Project *project); void check(const Utils::FilePaths &files); void stop(const Utils::FilePaths &files); @@ -45,7 +46,7 @@ public: void finishWithFail(const QString &exitMessage); private: - void updateArguments(); + void updateArguments(const CppcheckSettings &settings); void addToQueue(const Utils::FilePaths &files, const CppEditor::ProjectPart &part); QStringList additionalArguments(const CppEditor::ProjectPart &part) const;