From 6caa215f61f2e31826762208d842e5f0bf35c689 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Wed, 29 Nov 2023 22:42:48 +0100
Subject: [PATCH 01/33] ready to tidy readability-simplify-boolean-expr

---
 .clang-tidy    | 156 ++++++-------------------------------------------
 CMakeLists.txt |   2 +-
 2 files changed, 18 insertions(+), 140 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 52a95dbba51..e32f62adc08 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -15,145 +15,23 @@
 Checks: '*,
 
 
--SectionComment_We_disagree_with_the_following_checks__They_shall_remain_permanently_disabled,
-
--*-braces-around-statements,
--*-convert-member-functions-to-static,
--*-implicit-bool-conversion,
--*-magic-numbers,
--*-named-parameter,
--*-trailing-return*,
--*-uppercase-literal-suffix,
--*nodiscard,
--abseil-*,
--altera-struct-pack-align,
--altera-unroll-loops,
--bugprone-branch-clone,
--bugprone-easily-swappable-parameters,
--bugprone-implicit-widening-of-multiplication-result,
--bugprone-suspicious-include,
--cert-err58-cpp,
--cert-err61-cpp,
--cert-msc30-c*,
--cert-msc32-c,
--cert-msc50-cpp,
--cert-msc51-cpp,
--clang-analyzer-alpha*,
--clang-analyzer-alpha.deadcode.UnreachableCode,
--clang-analyzer-security.insecureAPI.strcpy,
--cppcoreguidelines-init-variables,
--cppcoreguidelines-macro-usage,
--cppcoreguidelines-non-private-member-variables-in-classes,
--cppcoreguidelines-pro-bounds-constant-array-index,
--cppcoreguidelines-pro-bounds-pointer-arithmetic,
--cppcoreguidelines-pro-type-cstyle-cast,
--cppcoreguidelines-pro-type-member-init,
--cppcoreguidelines-pro-type-reinterpret-cast,
--cppcoreguidelines-pro-type-vararg,
--cppcoreguidelines-slicing,
--fuchsia-default-arguments-calls,
--fuchsia-default-arguments-declarations,
--fuchsia-overloaded-operator,
--fuchsia-statically-constructed-objects,
--fuchsia-trailing-return,
--google-build-using-namespace,
--google-default-arguments,
--google-explicit-constructor,
--google-readability-avoid-underscore-in-googletest-name,
--google-readability-casting,
--google-readability-todo,
--google-runtime-int,
--hicpp-exception-baseclass,
--hicpp-explicit-conversions,
--hicpp-member-init,
--hicpp-noexcept-move,
--hicpp-signed-bitwise,
--hicpp-vararg,
--llvmlibc-callee-namespace,
--llvmlibc-implementation-in-namespace,
--llvmlibc-restrict-system-libc-headers,
--misc-no-recursion,
--misc-throw-by-value-catch-by-reference,
--performance-faster-string-find,
--performance-inefficient-string-concatenation,
--performance-noexcept-move-constructor,
--performance-no-automatic-move,
--performance-unnecessary-value-param,
--readability-identifier-length,
--readability-misleading-indentation,
--readability-use-anyofallof,
-
--SectionComment_To_be_manually_checked_from_time_to_time,
-
--readability-isolate-declaration,
--performance-inefficient-vector-operation,
--performance-unnecessary-copy-initialization,
--*-move-const-arg,
--modernize-use-default-member-init,
--readability-redundant-member-init,
-
-
--SectionComment_Disabled_unless_3rdparty_libraries_are_improved,
-
--*avoid-goto,
--*special-member-functions,
--clang-analyzer-cplusplus.NewDeleteLeaks,
--cppcoreguidelines-avoid-non-const-global-variables,
--cppcoreguidelines-pro-bounds-array-to-pointer-decay,
--hicpp-no-array-decay,
--llvm-include-order,
--llvm-namespace-comment,
--readability-redundant-access-specifiers,
-
-
--SectionComment_Resolving_the_following_checks_would_be_too_much_work_right_now,
-
--*avoid-c-arrays,
--*narrowing-conversions,
--cppcoreguidelines-prefer-member-initializer,
--cppcoreguidelines-owning-memory,
--bugprone-unused-return-value,
--bugprone-parent-virtual-call,
-
-
--SectionComment_Temporarily_disabled_checks__We_need_to_investigate_them_one_by_one,
-
--altera-id-dependent-backward-branch,
--bugprone-copy-constructor-init,
--bugprone-exception-escape,
--bugprone-misplaced-widening-cast,
--clang-analyzer-core.CallAndMessage,
--clang-analyzer-optin.cplusplus.VirtualCall,
--cppcoreguidelines-pro-type-const-cast,
--cppcoreguidelines-pro-type-static-cast-downcast,
--google-runtime-references,
--misc-non-private-member-variables-in-classes,
--modernize-loop-convert,
--readability-function-cognitive-complexity,
-
--SectionComment_Automizable__To_be_kept_satisfied,
-*-use-auto,
-*-use-emplace,
-*-use-equals-default,
-*-use-nullptr,
-*-use-override,
-cppcoreguidelines-explicit-virtual-functions,
-google-readability-avoid-underscore-in-googletest-name,
-llvm-qualified-auto,
-misc-uniqueptr-reset-release,
-modernize-avoid-bind,
-modernize-make-unique,
-modernize-pass-by-value,
-modernize-raw-string-literal,
-modernize-use-using,
-performance-for-range-copy,
-readability-avoid-const-params-in-decls,
-readability-const-return-type,
-readability-non-const-parameter,
-readability-container-size-empty,
-readability-delete-null-pointer,
-readability-inconsistent-declaration-parameter-name,
-readability-qualified-auto,
+-*,
+-cppcoreguidelines-explicit-virtual-functions,
+-llvm-qualified-auto,
+-misc-uniqueptr-reset-release,
+-modernize-avoid-bind,
+-modernize-make-unique,
+-modernize-pass-by-value,
+-modernize-raw-string-literal,
+-modernize-use-using,
+-performance-for-range-copy,
+-readability-avoid-const-params-in-decls,
+-readability-const-return-type,
+-readability-non-const-parameter,
+-readability-container-size-empty,
+-readability-delete-null-pointer,
+-readability-inconsistent-declaration-parameter-name,
+-readability-qualified-auto,
 readability-simplify-boolean-expr,
 
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f45d6097b7d..e871b5b182b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -234,7 +234,7 @@ endif()
 
 # from here on our own code, occasionally scrutinized by clang-tidy
 if(BA_TIDY)
-    set(CMAKE_CXX_CLANG_TIDY "clang-tidy") # has effect only if compiler is clang; uses .clang-tidy
+    set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--fix") # has effect only if compiler is clang; uses .clang-tidy
 endif()
 
 # configure core component libraries
-- 
GitLab


From 4e79961b4a45594a9b87a545bc46a3b46756247e Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Wed, 29 Nov 2023 23:45:56 +0100
Subject: [PATCH 02/33] ready to tidy readability-qualified-auto

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index e32f62adc08..aab41589734 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -31,8 +31,8 @@ Checks: '*,
 -readability-container-size-empty,
 -readability-delete-null-pointer,
 -readability-inconsistent-declaration-parameter-name,
--readability-qualified-auto,
-readability-simplify-boolean-expr,
+readability-qualified-auto,
+-readability-simplify-boolean-expr,
 
 
 '
-- 
GitLab


From fdabe423ba610bafe3fa8e54966654405b6e4ffb Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Wed, 29 Nov 2023 23:56:20 +0100
Subject: [PATCH 03/33] tidy/readability-qualified-auto: 'auto' -> 'auto*'

---
 GUI/Model/Model/JobModel.cpp             |  2 +-
 GUI/Model/Model/ParameterTuningModel.cpp |  8 ++++----
 GUI/Model/ToCore/SampleToCore.cpp        |  2 +-
 GUI/View/Canvas/IntensityDataCanvas.cpp  |  2 +-
 GUI/View/Canvas/SpecularDataCanvas.cpp   |  2 +-
 GUI/View/Frame/Fit1DFrame.cpp            |  2 +-
 GUI/View/Frame/Fit2DFrame.cpp            |  6 +++---
 GUI/View/Instrument/DetectorEditor.cpp   |  2 +-
 GUI/View/Scene/MaskGraphicsScene.cpp     |  2 +-
 GUI/View/Setup/Scale1DEditor.cpp         | 16 ++++++++--------
 GUI/View/Setup/Scale2DEditor.cpp         | 24 ++++++++++++------------
 11 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/GUI/Model/Model/JobModel.cpp b/GUI/Model/Model/JobModel.cpp
index c71c5ce32c0..5b386d0a9c2 100644
--- a/GUI/Model/Model/JobModel.cpp
+++ b/GUI/Model/Model/JobModel.cpp
@@ -51,7 +51,7 @@ JobItem* JobModel::jobItemForIdentifier(const QString& identifier)
 
 JobItem* JobModel::createJobItem()
 {
-    auto jobItem = new JobItem();
+    auto* jobItem = new JobItem();
     m_jobItems.emplace_back(jobItem);
     return jobItem;
 }
diff --git a/GUI/Model/Model/ParameterTuningModel.cpp b/GUI/Model/Model/ParameterTuningModel.cpp
index 3c7d2744171..24b9e33d76a 100644
--- a/GUI/Model/Model/ParameterTuningModel.cpp
+++ b/GUI/Model/Model/ParameterTuningModel.cpp
@@ -65,7 +65,7 @@ QVariant ParameterTuningModel::data(const QModelIndex& index, int role) const
         return {};
     }
 
-    if (auto var = toParameterItem(index)) {
+    if (auto* var = toParameterItem(index)) {
         if (role == Qt::DisplayRole || role == Qt::EditRole) {
             if (index.column() == 0)
                 return var->title();
@@ -96,7 +96,7 @@ QModelIndex ParameterTuningModel::index(int row, int column, const QModelIndex&
     if (!parent.isValid())
         return createIndex(row, column, m_rootObject->children()[row]);
 
-    if (auto label = toParameterLabelItem(parent))
+    if (auto* label = toParameterLabelItem(parent))
         return createIndex(row, column, label->children()[row]);
 
     return {};
@@ -189,12 +189,12 @@ ParameterLabelItem* ParameterTuningModel::toParameterLabelItem(const QModelIndex
 
 void ParameterTuningModel::setExpanded(const QModelIndex& index) const
 {
-    if (auto label = toParameterLabelItem(index))
+    if (auto* label = toParameterLabelItem(index))
         label->setCollapsed(false);
 }
 
 void ParameterTuningModel::setCollapsed(const QModelIndex& index) const
 {
-    if (auto label = toParameterLabelItem(index))
+    if (auto* label = toParameterLabelItem(index))
         label->setCollapsed(true);
 }
diff --git a/GUI/Model/ToCore/SampleToCore.cpp b/GUI/Model/ToCore/SampleToCore.cpp
index 08ba500cbe5..ecc9eff063c 100644
--- a/GUI/Model/ToCore/SampleToCore.cpp
+++ b/GUI/Model/ToCore/SampleToCore.cpp
@@ -81,7 +81,7 @@ std::unique_ptr<IParticle> createIParticle(const ItemWithParticles& item)
 std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& item)
 {
     auto layout = createParticleLayout(item);
-    for (auto particleItem : item.itemsWithParticles()) {
+    for (auto* particleItem : item.itemsWithParticles()) {
         if (auto particle = createIParticle(*particleItem)) {
             layout->addParticle(*particle);
             continue;
diff --git a/GUI/View/Canvas/IntensityDataCanvas.cpp b/GUI/View/Canvas/IntensityDataCanvas.cpp
index e51c202f4ec..f4ab62e5944 100644
--- a/GUI/View/Canvas/IntensityDataCanvas.cpp
+++ b/GUI/View/Canvas/IntensityDataCanvas.cpp
@@ -99,7 +99,7 @@ QList<QAction*> IntensityDataCanvas::actionList()
 
 void IntensityDataCanvas::onResetViewAction()
 {
-    for (auto item : allData2DItems())
+    for (auto* item : allData2DItems())
         item->resetView();
     gProjectDocument.value()->setModified();
 
diff --git a/GUI/View/Canvas/SpecularDataCanvas.cpp b/GUI/View/Canvas/SpecularDataCanvas.cpp
index 944ea4f567d..b2e1c454e7b 100644
--- a/GUI/View/Canvas/SpecularDataCanvas.cpp
+++ b/GUI/View/Canvas/SpecularDataCanvas.cpp
@@ -92,7 +92,7 @@ void SpecularDataCanvas::enableDeprecatedOnMousePress(bool b)
 
 void SpecularDataCanvas::onResetViewAction()
 {
-    for (auto item : allData1DItems())
+    for (auto* item : allData1DItems())
         item->resetView();
     gProjectDocument.value()->setModified();
 }
diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp
index cba005e2208..2e0c46c2eac 100644
--- a/GUI/View/Frame/Fit1DFrame.cpp
+++ b/GUI/View/Frame/Fit1DFrame.cpp
@@ -82,7 +82,7 @@ Fit1DFrame::Fit1DFrame(QWidget* parent)
 
 void Fit1DFrame::setJobOrDatafileItem(QObject* item)
 {
-    auto job_item = dynamic_cast<JobItem*>(item);
+    auto* job_item = dynamic_cast<JobItem*>(item);
     ASSERT(job_item);
     JobItem* oldJob = jobItem();
 
diff --git a/GUI/View/Frame/Fit2DFrame.cpp b/GUI/View/Frame/Fit2DFrame.cpp
index 857db0e64c6..f97e647a6cf 100644
--- a/GUI/View/Frame/Fit2DFrame.cpp
+++ b/GUI/View/Frame/Fit2DFrame.cpp
@@ -84,7 +84,7 @@ Fit2DFrame::Fit2DFrame()
 
 void Fit2DFrame::setJobOrDatafileItem(QObject* item)
 {
-    auto job_item = dynamic_cast<JobItem*>(item);
+    auto* job_item = dynamic_cast<JobItem*>(item);
     ASSERT(job_item);
     JobItem* oldJob = jobItem();
 
@@ -124,8 +124,8 @@ void Fit2DFrame::onResetViewAction()
 void Fit2DFrame::connectItems()
 {
     // sync XY view area between simulated, real and difference plots
-    for (auto senderItem : allData2DItems())
-        for (auto receiverItem : allData2DItems())
+    for (auto* senderItem : allData2DItems())
+        for (auto* receiverItem : allData2DItems())
             if (receiverItem != senderItem)
                 connect(senderItem, &DataItem::updateOtherPlots, receiverItem,
                         &DataItem::checkXYranges, Qt::UniqueConnection);
diff --git a/GUI/View/Instrument/DetectorEditor.cpp b/GUI/View/Instrument/DetectorEditor.cpp
index 49200b995a7..d75b627b67f 100644
--- a/GUI/View/Instrument/DetectorEditor.cpp
+++ b/GUI/View/Instrument/DetectorEditor.cpp
@@ -49,7 +49,7 @@ DetectorEditor::DetectorEditor(QWidget* parent, GISASInstrumentItem* instrItem)
     auto* resolutionForm = new StaticGroupBox("Resolution function", this);
     xyrow->addWidget(resolutionForm);
 
-    auto resolutionLayout = new QFormLayout;
+    auto* resolutionLayout = new QFormLayout;
     resolutionForm->body()->setLayout(resolutionLayout);
     resolutionLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
 
diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp
index b9401775480..4ce0e1acc4b 100644
--- a/GUI/View/Scene/MaskGraphicsScene.cpp
+++ b/GUI/View/Scene/MaskGraphicsScene.cpp
@@ -387,7 +387,7 @@ void MaskGraphicsScene::updateViews()
         maskView->addView(itemView);
 
         // Add views for the points of the PolygonItem
-        if (auto polygonItem = dynamic_cast<PolygonItem*>(maskItem)) {
+        if (auto* polygonItem = dynamic_cast<PolygonItem*>(maskItem)) {
             IShapeDisplay* const polygonView = itemView;
             for (PolygonPointItem* pointItem : polygonItem->points()) {
                 IShapeDisplay* pointView = addViewForItem(pointItem);
diff --git a/GUI/View/Setup/Scale1DEditor.cpp b/GUI/View/Setup/Scale1DEditor.cpp
index 673121b8436..10c40113e7e 100644
--- a/GUI/View/Setup/Scale1DEditor.cpp
+++ b/GUI/View/Setup/Scale1DEditor.cpp
@@ -37,7 +37,7 @@ void Scale1DEditor::createPanelElements()
     if (allData1DItems().size() == 0)
         return;
 
-    for (auto item : allData1DItems())
+    for (auto* item : allData1DItems())
         disconnect(item, nullptr, this, nullptr);
 
     GUI::Util::Layout::clearLayout(m_mainLayout);
@@ -66,7 +66,7 @@ void Scale1DEditor::createPanelElements()
     xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData1DItem()->axItemX()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allData1DItems())
+                                        for (auto* item : allData1DItems())
                                             item->axItemX()->setMin(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -75,7 +75,7 @@ void Scale1DEditor::createPanelElements()
     xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData1DItem()->axItemX()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : allData1DItems())
+                                        for (auto* item : allData1DItems())
                                             item->axItemX()->setMax(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -92,7 +92,7 @@ void Scale1DEditor::createPanelElements()
     auto* logRangeSpinbox = GUI::Util::createDoubleSpinbox(
         [this] { return currentData1DItem()->axItemY()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto item : mainData1DItems()) {
+            for (auto* item : mainData1DItems()) {
                 item->axItemY()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -103,7 +103,7 @@ void Scale1DEditor::createPanelElements()
     yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData1DItem()->axItemY()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : mainData1DItems()) {
+                                        for (auto* item : mainData1DItems()) {
                                             item->axItemY()->setMin(newValue);
                                             item->axItemY()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -115,7 +115,7 @@ void Scale1DEditor::createPanelElements()
     yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData1DItem()->axItemY()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : mainData1DItems()) {
+                                        for (auto* item : mainData1DItems()) {
                                             item->axItemY()->setMax(newValue);
                                             item->axItemY()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -128,7 +128,7 @@ void Scale1DEditor::createPanelElements()
         "log10", [this] { return currentData1DItem()->axItemY()->isLogScale(); },
         [this, logRangeSpinbox](bool b) {
             logRangeSpinbox->setEnabled(b);
-            for (auto item : allData1DItems())
+            for (auto* item : allData1DItems())
                 item->axItemY()->setLogScale(b);
             gProjectDocument.value()->setModified();
         },
@@ -145,7 +145,7 @@ void Scale1DEditor::createPanelElements()
             &Scale1DEditor::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
-    for (auto item : allData1DItems())
+    for (auto* item : allData1DItems())
         connect(item, &DataItem::axesUnitsChanged, this, &Scale1DEditor::updateItemCoords,
                 Qt::UniqueConnection);
 }
diff --git a/GUI/View/Setup/Scale2DEditor.cpp b/GUI/View/Setup/Scale2DEditor.cpp
index c200d470ec8..74f623cf502 100644
--- a/GUI/View/Setup/Scale2DEditor.cpp
+++ b/GUI/View/Setup/Scale2DEditor.cpp
@@ -34,7 +34,7 @@ Scale2DEditor::Scale2DEditor(QWidget* parent)
 
 void Scale2DEditor::unsubscribe()
 {
-    for (auto item : allData2DItems())
+    for (auto* item : allData2DItems())
         disconnect(item, nullptr, this, nullptr);
 }
 
@@ -65,7 +65,7 @@ void Scale2DEditor::createPanelElements()
         "Color scheme:",
         GUI::Util::createComboBox([this] { return currentData2DItem()->gradientCombo(); },
                                   [this](const QString& newVal) {
-                                      for (auto item : allData2DItems())
+                                      for (auto* item : allData2DItems())
                                           item->setCurrentGradient(newVal);
                                       gProjectDocument.value()->setModified();
                                   },
@@ -74,7 +74,7 @@ void Scale2DEditor::createPanelElements()
     m_mainLayout->addRow(GUI::Util::createCheckBox(
         "Interpolate", [this] { return currentData2DItem()->isInterpolated(); },
         [this](bool b) {
-            for (auto item : allData2DItems())
+            for (auto* item : allData2DItems())
                 item->setInterpolated(b);
             gProjectDocument.value()->setModified();
         },
@@ -89,7 +89,7 @@ void Scale2DEditor::createPanelElements()
     xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->axItemX()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allData2DItems())
+                                        for (auto* item : allData2DItems())
                                             item->axItemX()->setMin(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -98,7 +98,7 @@ void Scale2DEditor::createPanelElements()
     xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->axItemX()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : allData2DItems())
+                                        for (auto* item : allData2DItems())
                                             item->axItemX()->setMax(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -115,7 +115,7 @@ void Scale2DEditor::createPanelElements()
     yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->axItemY()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allData2DItems())
+                                        for (auto* item : allData2DItems())
                                             item->axItemY()->setMin(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -124,7 +124,7 @@ void Scale2DEditor::createPanelElements()
     yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->axItemY()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : allData2DItems())
+                                        for (auto* item : allData2DItems())
                                             item->axItemY()->setMax(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -141,7 +141,7 @@ void Scale2DEditor::createPanelElements()
     auto* logRangeSpinbox = GUI::Util::createDoubleSpinbox(
         [this] { return currentData2DItem()->zAxisItem()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto item : mainData2DItems()) {
+            for (auto* item : mainData2DItems()) {
                 item->zAxisItem()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -152,7 +152,7 @@ void Scale2DEditor::createPanelElements()
     zFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->zAxisItem()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allData2DItems()) {
+                                        for (auto* item : allData2DItems()) {
                                             item->zAxisItem()->setMin(newValue);
                                             item->zAxisItem()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -164,7 +164,7 @@ void Scale2DEditor::createPanelElements()
     zFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
                                     [this] { return currentData2DItem()->zAxisItem()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : mainData2DItems()) {
+                                        for (auto* item : mainData2DItems()) {
                                             item->zAxisItem()->setMax(newValue);
                                             item->zAxisItem()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -177,7 +177,7 @@ void Scale2DEditor::createPanelElements()
         "log10", [this] { return currentData2DItem()->zAxisItem()->isLogScale(); },
         [this, logRangeSpinbox](bool b) {
             logRangeSpinbox->setEnabled(b);
-            for (auto item : allData2DItems())
+            for (auto* item : allData2DItems())
                 item->zAxisItem()->setLogScale(b);
             gProjectDocument.value()->setModified();
         },
@@ -188,7 +188,7 @@ void Scale2DEditor::createPanelElements()
     zFormLayout->addRow(GUI::Util::createCheckBox(
         "Visible", [this] { return currentData2DItem()->zAxisItem()->isVisible(); },
         [this](bool b) {
-            for (auto item : allData2DItems())
+            for (auto* item : allData2DItems())
                 item->zAxisItem()->setVisible(b);
             gProjectDocument.value()->setModified();
         },
-- 
GitLab


From 94607134bc67bb61e3fa1c97b56b664b7e0f7ba2 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Wed, 29 Nov 2023 23:56:45 +0100
Subject: [PATCH 04/33] ready to tidy
 readability-inconsistent-declaration-parameter-name

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index aab41589734..08b7df16f04 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -30,8 +30,8 @@ Checks: '*,
 -readability-non-const-parameter,
 -readability-container-size-empty,
 -readability-delete-null-pointer,
--readability-inconsistent-declaration-parameter-name,
-readability-qualified-auto,
+readability-inconsistent-declaration-parameter-name,
+-readability-qualified-auto,
 -readability-simplify-boolean-expr,
 
 
-- 
GitLab


From e488d7edd7775c91e0cdd14ff58f41bfd6cec33e Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 00:23:16 +0100
Subject: [PATCH 05/33] manually correct inconsistent argument names

---
 GUI/Model/Device/DatafileItem.cpp                |  8 ++++----
 GUI/Model/Device/DatafileItem.h                  |  2 +-
 GUI/Model/Model/ParameterTuningModel.cpp         |  8 ++++----
 GUI/Model/Sample/SampleItem.h                    |  4 ++--
 GUI/Support/XML/UtilXML.h                        |  8 ++++----
 GUI/View/Fit/FitSessionWidget.h                  |  2 +-
 GUI/View/Instrument/DepthprobeInstrumentEditor.h |  2 +-
 GUI/View/Sample/CompoundForm.cpp                 |  6 +++---
 GUI/View/Sample/ParticleLayoutForm.cpp           |  6 +++---
 GUI/View/Sample/SampleEditorController.cpp       | 16 ++++++++--------
 GUI/View/Sample/SampleEditorController.h         |  2 +-
 11 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/GUI/Model/Device/DatafileItem.cpp b/GUI/Model/Device/DatafileItem.cpp
index 0f9a67aced8..8667b610359 100644
--- a/GUI/Model/Device/DatafileItem.cpp
+++ b/GUI/Model/Device/DatafileItem.cpp
@@ -362,15 +362,15 @@ QString DatafileItem::readDatafiles(const QString& projectDir, MessageService* m
         return (dataError + "\n" + nativeDataError);
 }
 
-void DatafileItem::copyTo(DatafileItem* const realdata_dst) const
+void DatafileItem::copyTo(DatafileItem* const dest) const
 {
-    GUI::Util::copyContents(this, realdata_dst);
+    GUI::Util::copyContents(this, dest);
 
     if (m_dataItem)
-        realdata_dst->dataItem()->setDatafield(*dataItem()->c_field());
+        dest->dataItem()->setDatafield(*dataItem()->c_field());
 
     if (m_nativeDataItem)
-        realdata_dst->nativeDataItem()->setDatafield(*nativeDataItem()->c_field());
+        dest->nativeDataItem()->setDatafield(*nativeDataItem()->c_field());
 }
 
 std::vector<int> DatafileItem::shape() const
diff --git a/GUI/Model/Device/DatafileItem.h b/GUI/Model/Device/DatafileItem.h
index a379100f527..aa7ce51972a 100644
--- a/GUI/Model/Device/DatafileItem.h
+++ b/GUI/Model/Device/DatafileItem.h
@@ -89,7 +89,7 @@ public:
     // other
 
     //! Make a copy instance.
-    void copyTo(DatafileItem* const realdata_new) const;
+    void copyTo(DatafileItem* const dest) const;
 
     //! Returns the shape of underlying data item
     std::vector<int> shape() const;
diff --git a/GUI/Model/Model/ParameterTuningModel.cpp b/GUI/Model/Model/ParameterTuningModel.cpp
index 24b9e33d76a..ade797ae66c 100644
--- a/GUI/Model/Model/ParameterTuningModel.cpp
+++ b/GUI/Model/Model/ParameterTuningModel.cpp
@@ -115,15 +115,15 @@ QModelIndex ParameterTuningModel::parent(const QModelIndex& index) const
     return createIndex(row, 0, item->parent());
 }
 
-int ParameterTuningModel::rowCount(const QModelIndex& index) const
+int ParameterTuningModel::rowCount(const QModelIndex& parent) const
 {
-    if (index.column() > 0)
+    if (parent.column() > 0)
         return 0;
 
-    if (!index.isValid())
+    if (!parent.isValid())
         return m_rootObject->children().size();
 
-    QObject* item = static_cast<QObject*>(index.internalPointer());
+    QObject* item = static_cast<QObject*>(parent.internalPointer());
     return item->children().size();
 }
 
diff --git a/GUI/Model/Sample/SampleItem.h b/GUI/Model/Sample/SampleItem.h
index 57b7685e5bc..f4b2ca3d279 100644
--- a/GUI/Model/Sample/SampleItem.h
+++ b/GUI/Model/Sample/SampleItem.h
@@ -61,8 +61,8 @@ public:
     LayerItem* createLayerItemAt(int index = -1);
 
     void updateTopBottom();
-    void removeLayer(LayerItem* item);
-    void moveLayer(LayerItem* item, LayerItem* aboveThisLayer);
+    void removeLayer(LayerItem* layer);
+    void moveLayer(LayerItem* layer, LayerItem* aboveThisLayer);
 
     void writeTo(QXmlStreamWriter* w) const;
     void readFrom(QXmlStreamReader* r);
diff --git a/GUI/Support/XML/UtilXML.h b/GUI/Support/XML/UtilXML.h
index d7bce77962b..598fcba42b0 100644
--- a/GUI/Support/XML/UtilXML.h
+++ b/GUI/Support/XML/UtilXML.h
@@ -50,8 +50,8 @@ void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, unsi
 void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, double d);
 void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, QString s);
 void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, QColor c);
-void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, const R3& vec);
-void writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, const complex_t& c);
+void writeAttribute(QXmlStreamWriter* writer, const QString& attributeBaseName, const R3& vec);
+void writeAttribute(QXmlStreamWriter* writer, const QString& attributeBaseName, const complex_t& c);
 
 unsigned readUIntAttribute(QXmlStreamReader* reader, const QString& attributeName);
 
@@ -61,8 +61,8 @@ void readAttribute(QXmlStreamReader* reader, const QString& attributeName, unsig
 void readAttribute(QXmlStreamReader* reader, const QString& attributeName, double* d);
 void readAttribute(QXmlStreamReader* reader, const QString& attributeName, QString* s);
 void readAttribute(QXmlStreamReader* reader, const QString& attributeName, QColor* c);
-void readAttribute(QXmlStreamReader* reader, const QString& attributeName, R3* vec);
-void readAttribute(QXmlStreamReader* reader, const QString& attributeName, complex_t* c);
+void readAttribute(QXmlStreamReader* reader, const QString& attributeBaseName, R3* vec);
+void readAttribute(QXmlStreamReader* reader, const QString& attributeBaseName, complex_t* c);
 
 } // namespace XML
 
diff --git a/GUI/View/Fit/FitSessionWidget.h b/GUI/View/Fit/FitSessionWidget.h
index b67b3b3b881..1185633afeb 100644
--- a/GUI/View/Fit/FitSessionWidget.h
+++ b/GUI/View/Fit/FitSessionWidget.h
@@ -34,7 +34,7 @@ public:
     FitSessionWidget(QWidget* parent = nullptr);
     ~FitSessionWidget();
 
-    void setJobItem(JobItem* jobItem);
+    void setJobItem(JobItem* job_item);
     void setModelTuningWidget(ParameterTuningWidget* tuningWidget);
     void setSessionController(FitSessionController* sessionController);
 
diff --git a/GUI/View/Instrument/DepthprobeInstrumentEditor.h b/GUI/View/Instrument/DepthprobeInstrumentEditor.h
index 30222818623..a4a5e8841eb 100644
--- a/GUI/View/Instrument/DepthprobeInstrumentEditor.h
+++ b/GUI/View/Instrument/DepthprobeInstrumentEditor.h
@@ -26,7 +26,7 @@ class MultiInstrumentNotifier;
 class DepthprobeInstrumentEditor : public QWidget {
     Q_OBJECT
 public:
-    DepthprobeInstrumentEditor(QWidget* parent, DepthprobeInstrumentItem* item,
+    DepthprobeInstrumentEditor(QWidget* parent, DepthprobeInstrumentItem* instrument,
                                MultiInstrumentNotifier* ec);
 
 signals:
diff --git a/GUI/View/Sample/CompoundForm.cpp b/GUI/View/Sample/CompoundForm.cpp
index 8bec549fdcf..57e57b9af17 100644
--- a/GUI/View/Sample/CompoundForm.cpp
+++ b/GUI/View/Sample/CompoundForm.cpp
@@ -76,15 +76,15 @@ CompoundItem* CompoundForm::compositionItem() const
     return m_compositionItem;
 }
 
-void CompoundForm::onParticleAdded(ItemWithParticles* p)
+void CompoundForm::onParticleAdded(ItemWithParticles* item)
 {
-    int index = m_compositionItem->itemsWithParticles().indexOf(p);
+    int index = m_compositionItem->itemsWithParticles().indexOf(item);
     const int rowInLayout = m_layout->rowCount() - 1
                             - (m_compositionItem->itemsWithParticles().size() - 1)
                             + index; // -1: btn
 
     m_layout->insertRow(rowInLayout,
-                        LayerEditorUtil::createWidgetForItemWithParticles(this, p, false, m_ec));
+                        LayerEditorUtil::createWidgetForItemWithParticles(this, item, false, m_ec));
 }
 
 void CompoundForm::onAboutToRemoveParticle(ItemWithParticles* item)
diff --git a/GUI/View/Sample/ParticleLayoutForm.cpp b/GUI/View/Sample/ParticleLayoutForm.cpp
index b32df18fc61..773531e2650 100644
--- a/GUI/View/Sample/ParticleLayoutForm.cpp
+++ b/GUI/View/Sample/ParticleLayoutForm.cpp
@@ -101,14 +101,14 @@ ParticleLayoutItem* ParticleLayoutForm::layoutItem() const
     return m_layoutItem;
 }
 
-void ParticleLayoutForm::onParticleAdded(ItemWithParticles* p)
+void ParticleLayoutForm::onParticleAdded(ItemWithParticles* item)
 {
-    int index = m_layoutItem->itemsWithParticles().indexOf(p);
+    int index = m_layoutItem->itemsWithParticles().indexOf(item);
     const int rowInLayout = m_layout->rowCount() - 1
                             - (m_layoutItem->itemsWithParticles().size() - 1) + index; // -1: btn
 
     m_layout->insertRow(rowInLayout,
-                        LayerEditorUtil::createWidgetForItemWithParticles(this, p, true, m_ec));
+                        LayerEditorUtil::createWidgetForItemWithParticles(this, item, true, m_ec));
 }
 
 void ParticleLayoutForm::onAboutToRemoveParticle(ItemWithParticles* item)
diff --git a/GUI/View/Sample/SampleEditorController.cpp b/GUI/View/Sample/SampleEditorController.cpp
index fb7742d1a98..3cc17663805 100644
--- a/GUI/View/Sample/SampleEditorController.cpp
+++ b/GUI/View/Sample/SampleEditorController.cpp
@@ -181,20 +181,20 @@ void SampleEditorController::onParticleLayoutAdded(ParticleLayoutItem* layout,
             w->onParticleAdded(newItem);
 }
 
-void SampleEditorController::addParticleLayoutItem(ParticleLayoutItem* layoutItem,
+void SampleEditorController::addParticleLayoutItem(ParticleLayoutItem* layout,
                                                    FormFactorItemCatalog::Type formFactorType)
 {
     auto* newParticle = createAndInitItem(formFactorType);
-    layoutItem->addItemWithParticleSelection(newParticle);
-    onParticleLayoutAdded(layoutItem, newParticle);
+    layout->addItemWithParticleSelection(newParticle);
+    onParticleLayoutAdded(layout, newParticle);
 }
 
-void SampleEditorController::addParticleLayoutItem(ParticleLayoutItem* layoutItem,
+void SampleEditorController::addParticleLayoutItem(ParticleLayoutItem* layout,
                                                    ItemWithParticlesCatalog::Type type)
 {
     auto* newItem = createAndInitItem(type);
-    layoutItem->addItemWithParticleSelection(newItem);
-    onParticleLayoutAdded(layoutItem, newItem);
+    layout->addItemWithParticleSelection(newItem);
+    onParticleLayoutAdded(layout, newItem);
 }
 
 void SampleEditorController::duplicateItemWithParticles(ItemWithParticles* item)
@@ -251,9 +251,9 @@ SampleEditorController::createAndInitItem(FormFactorItemCatalog::Type formFactor
 }
 
 ItemWithParticles*
-SampleEditorController::createAndInitItem(ItemWithParticlesCatalog::Type itemType) const
+SampleEditorController::createAndInitItem(ItemWithParticlesCatalog::Type type) const
 {
-    auto* newItem = ItemWithParticlesCatalog::create(itemType, materialModel());
+    auto* newItem = ItemWithParticlesCatalog::create(type, materialModel());
 
     if (auto* p = dynamic_cast<ItemWithMaterial*>(newItem))
         p->setMaterial(materialModel()->defaultMaterialItem());
diff --git a/GUI/View/Sample/SampleEditorController.h b/GUI/View/Sample/SampleEditorController.h
index 50831f7fa7f..71792337909 100644
--- a/GUI/View/Sample/SampleEditorController.h
+++ b/GUI/View/Sample/SampleEditorController.h
@@ -80,7 +80,7 @@ public:
 
     void onParticleLayoutAdded(ParticleLayoutItem* layout, ItemWithParticles* newItem);
     void addParticleLayoutItem(ParticleLayoutItem* layout, ItemWithParticlesCatalog::Type type);
-    void addParticleLayoutItem(ParticleLayoutItem* layout, FormFactorItemCatalog::Type t);
+    void addParticleLayoutItem(ParticleLayoutItem* layout, FormFactorItemCatalog::Type type);
     ParticleLayoutItem* parentLayoutItem(ItemWithParticles* item);
 
     void onParticleCompoundAdded(CompoundItem* composition, ItemWithParticles* newItem);
-- 
GitLab


From 5a36aa84bdf85106a4bb63e5a8a142d8160cdd46 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 00:24:11 +0100
Subject: [PATCH 06/33] ready to tidy modernize-use-using

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 08b7df16f04..4e9e1f87957 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -23,14 +23,14 @@ Checks: '*,
 -modernize-make-unique,
 -modernize-pass-by-value,
 -modernize-raw-string-literal,
--modernize-use-using,
+modernize-use-using,
 -performance-for-range-copy,
 -readability-avoid-const-params-in-decls,
 -readability-const-return-type,
 -readability-non-const-parameter,
 -readability-container-size-empty,
 -readability-delete-null-pointer,
-readability-inconsistent-declaration-parameter-name,
+-readability-inconsistent-declaration-parameter-name,
 -readability-qualified-auto,
 -readability-simplify-boolean-expr,
 
-- 
GitLab


From ec5c481f2e113a1f2bb4d42535ed22aa72b23aff Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 07:05:10 +0100
Subject: [PATCH 07/33] tidy/modernize-use-using

---
 Tests/Unit/GUI/TestDatafilesModel.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Tests/Unit/GUI/TestDatafilesModel.cpp b/Tests/Unit/GUI/TestDatafilesModel.cpp
index 4d7bb26702b..9e5b14b10f1 100644
--- a/Tests/Unit/GUI/TestDatafilesModel.cpp
+++ b/Tests/Unit/GUI/TestDatafilesModel.cpp
@@ -130,7 +130,7 @@ TEST(TestDatafilesModel, saveXMLData)
     std::ifstream f1(file1.toStdString());
     std::ifstream f2(file2.toStdString());
 
-    typedef std::istreambuf_iterator<char> it;
+    using it = std::istreambuf_iterator<char>;
 
     std::vector<char> contents1((it(f1)), it());
     std::vector<char> contents2((it(f2)), it());
-- 
GitLab


From f4b9b9de9fa7ff37b8f7816263cc3c6cf0b2e217 Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 07:16:43 +0100
Subject: [PATCH 08/33] ready to tidy modernize-pass-by-value

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 4e9e1f87957..ecedda1cf4a 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -21,9 +21,9 @@ Checks: '*,
 -misc-uniqueptr-reset-release,
 -modernize-avoid-bind,
 -modernize-make-unique,
--modernize-pass-by-value,
+modernize-pass-by-value,
 -modernize-raw-string-literal,
-modernize-use-using,
+-modernize-use-using,
 -performance-for-range-copy,
 -readability-avoid-const-params-in-decls,
 -readability-const-return-type,
-- 
GitLab


From 683535620108dc3bcefb5383ce4bf11f405bac5c Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:04:28 +0100
Subject: [PATCH 09/33] tidy/modernize-pass-by-value

---
 GUI/Model/Data/DataItem.cpp                   | 5 +++--
 GUI/Model/Data/DataItem.h                     | 2 +-
 GUI/Model/Job/FitParameterItem.cpp            | 5 +++--
 GUI/Model/Job/FitParameterItem.h              | 2 +-
 GUI/Model/Job/ParameterBackup.cpp             | 5 +++--
 GUI/Model/Job/ParameterBackup.h               | 2 +-
 GUI/Model/Job/ParameterTreeItems.cpp          | 5 +++--
 GUI/Model/Job/ParameterTreeItems.h            | 2 +-
 Tests/Functional/Mumufit/ResidualTestPlan.cpp | 3 ++-
 Tests/Functional/Mumufit/ScalarTestPlan.cpp   | 3 ++-
 10 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 665e1e50cbf..cfd3ef5e9ca 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -22,6 +22,7 @@
 #include "GUI/Support/Util/MessageService.h"
 #include "GUI/Support/XML/UtilXML.h"
 #include <QFile>
+#include <utility>
 
 namespace {
 namespace Tag {
@@ -35,8 +36,8 @@ const QString YAxis("YAxis");
 } // namespace
 
 
-DataItem::DataItem(const QString& modelType)
-    : TYPE(modelType)
+DataItem::DataItem(QString  modelType)
+    : TYPE(std::move(modelType))
     , m_fname("undefined")
     , m_xAxis(std::make_unique<BasicAxisItem>())
     , m_yAxis(std::make_unique<AmplitudeAxisItem>())
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 4960a5284c7..8196f390c76 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -34,7 +34,7 @@ class MessageService;
 class DataItem : public QObject {
     Q_OBJECT
 protected:
-    explicit DataItem(const QString& modelType);
+    explicit DataItem(QString  modelType);
 
 public:
     ~DataItem();
diff --git a/GUI/Model/Job/FitParameterItem.cpp b/GUI/Model/Job/FitParameterItem.cpp
index 14537de50f7..476afa47bf5 100644
--- a/GUI/Model/Job/FitParameterItem.cpp
+++ b/GUI/Model/Job/FitParameterItem.cpp
@@ -16,6 +16,7 @@
 #include "Base/Util/Assert.h"
 #include "GUI/Model/Job/FitParameterLinkItem.h"
 #include "GUI/Support/XML/UtilXML.h"
+#include <utility>
 
 namespace {
 namespace Tag {
@@ -34,9 +35,9 @@ const QString BaseData("BaseData");
 } // namespace Tag
 } // namespace
 
-FitTypeItem::FitTypeItem(const ComboProperty& type, QObject* parent)
+FitTypeItem::FitTypeItem(ComboProperty  type, QObject* parent)
     : QObject(parent)
-    , m_type(type)
+    , m_type(std::move(type))
 {
     setObjectName("Type");
 }
diff --git a/GUI/Model/Job/FitParameterItem.h b/GUI/Model/Job/FitParameterItem.h
index c6af7789c3b..a5d580e02d9 100644
--- a/GUI/Model/Job/FitParameterItem.h
+++ b/GUI/Model/Job/FitParameterItem.h
@@ -25,7 +25,7 @@ class FitParameterLinkItem;
 class FitTypeItem : public QObject {
     Q_OBJECT
 public:
-    explicit FitTypeItem(const ComboProperty& type, QObject* parent = nullptr);
+    explicit FitTypeItem(ComboProperty  type, QObject* parent = nullptr);
 
     const ComboProperty& type() const { return m_type; }
     void setType(const ComboProperty& c) { m_type = c; }
diff --git a/GUI/Model/Job/ParameterBackup.cpp b/GUI/Model/Job/ParameterBackup.cpp
index bc4b0c29343..ae3ffef4bad 100644
--- a/GUI/Model/Job/ParameterBackup.cpp
+++ b/GUI/Model/Job/ParameterBackup.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/Model/Job/ParameterBackup.h"
 #include "GUI/Support/XML/UtilXML.h"
+#include <utility>
 
 namespace {
 namespace Tag {
@@ -25,8 +26,8 @@ const QString BackupValue("BackupValue");
 } // namespace Tag
 } // namespace
 
-ParameterBackup::ParameterBackup(const QString& title)
-    : m_title(title)
+ParameterBackup::ParameterBackup(QString  title)
+    : m_title(std::move(title))
 {
 }
 
diff --git a/GUI/Model/Job/ParameterBackup.h b/GUI/Model/Job/ParameterBackup.h
index 72396e57e8e..5b48308d0f9 100644
--- a/GUI/Model/Job/ParameterBackup.h
+++ b/GUI/Model/Job/ParameterBackup.h
@@ -22,7 +22,7 @@
 
 class ParameterBackup {
 public:
-    ParameterBackup(const QString& title = "");
+    ParameterBackup(QString  title = "");
 
     QString title() const { return m_title; }
     void setTitle(const QString& title) { m_title = title; }
diff --git a/GUI/Model/Job/ParameterTreeItems.cpp b/GUI/Model/Job/ParameterTreeItems.cpp
index f9b5b1f683e..3c923c5aa62 100644
--- a/GUI/Model/Job/ParameterTreeItems.cpp
+++ b/GUI/Model/Job/ParameterTreeItems.cpp
@@ -15,6 +15,7 @@
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "Base/Util/Assert.h"
 #include "GUI/Support/XML/UtilXML.h"
+#include <utility>
 
 namespace {
 namespace Tag {
@@ -49,9 +50,9 @@ ParameterItem* findParameterItem(QObject* item, const QString& link)
 //  class ParameterLabelItem
 //  ************************************************************************************************
 
-ParameterLabelItem::ParameterLabelItem(const QString& title, QObject* parent)
+ParameterLabelItem::ParameterLabelItem(QString  title, QObject* parent)
     : QObject(parent)
-    , m_title(title)
+    , m_title(std::move(title))
 {
 }
 
diff --git a/GUI/Model/Job/ParameterTreeItems.h b/GUI/Model/Job/ParameterTreeItems.h
index ead125bf52d..21f2591982e 100644
--- a/GUI/Model/Job/ParameterTreeItems.h
+++ b/GUI/Model/Job/ParameterTreeItems.h
@@ -31,7 +31,7 @@
 class ParameterLabelItem : public QObject {
     Q_OBJECT
 public:
-    ParameterLabelItem(const QString& title, QObject* parent);
+    ParameterLabelItem(QString  title, QObject* parent);
 
     QString title() const { return m_title; }
     void setTitle(const QString& title) { m_title = title; }
diff --git a/Tests/Functional/Mumufit/ResidualTestPlan.cpp b/Tests/Functional/Mumufit/ResidualTestPlan.cpp
index 00a7341e2aa..70b630aa22c 100644
--- a/Tests/Functional/Mumufit/ResidualTestPlan.cpp
+++ b/Tests/Functional/Mumufit/ResidualTestPlan.cpp
@@ -16,11 +16,12 @@
 #include "Fit/Kernel/Minimizer.h"
 #include <cassert>
 #include <iostream>
+#include <utility>
 
 using namespace mumufit;
 
 ResidualTestPlan::ResidualTestPlan(const std::string&, test_funct_t func)
-    : m_test_func(func)
+    : m_test_func(std::move(func))
 {
     m_xvalues.resize(101);
     for (int i = 0; i <= 100; ++i)
diff --git a/Tests/Functional/Mumufit/ScalarTestPlan.cpp b/Tests/Functional/Mumufit/ScalarTestPlan.cpp
index b16512e6bcd..1e1570f8079 100644
--- a/Tests/Functional/Mumufit/ScalarTestPlan.cpp
+++ b/Tests/Functional/Mumufit/ScalarTestPlan.cpp
@@ -17,12 +17,13 @@
 #include <cmath>
 #include <iostream>
 #include <sstream>
+#include <utility>
 
 using namespace mumufit;
 
 ScalarTestPlan::ScalarTestPlan(const std::string&, scalar_function_t func, double expected_minimum,
                                double tolerance)
-    : m_objective_function(func)
+    : m_objective_function(std::move(func))
     , m_expected_minimum(expected_minimum)
     , m_tolerance_on_minimum(tolerance)
 {
-- 
GitLab


From d7247d9da5ac53d493d4077fbc75eaf8bbe1a47f Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:09:14 +0100
Subject: [PATCH 10/33] tidy ready for unique/make

---
 .clang-tidy | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index ecedda1cf4a..50f4bdfd1fc 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -18,10 +18,10 @@ Checks: '*,
 -*,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
--misc-uniqueptr-reset-release,
--modernize-avoid-bind,
--modernize-make-unique,
-modernize-pass-by-value,
+misc-uniqueptr-reset-release,
+modernize-avoid-bind,
+modernize-make-unique,
+-modernize-pass-by-value,
 -modernize-raw-string-literal,
 -modernize-use-using,
 -performance-for-range-copy,
-- 
GitLab


From 6723f6cc335b5b64c728cbe5d119ff6d3d422cb1 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:14:08 +0100
Subject: [PATCH 11/33] tidy/modernize-make-unique,
 misc-uniqueptr-reset-release + manual cleanup

---
 GUI/Model/Data/DataItem.cpp            | 2 +-
 GUI/Model/Data/DataItem.h              | 2 +-
 GUI/Model/Device/InstrumentItems.cpp   | 4 ++--
 GUI/Model/Job/FitParameterItem.cpp     | 2 +-
 GUI/Model/Job/FitParameterItem.h       | 2 +-
 GUI/Model/Job/ParameterBackup.cpp      | 2 +-
 GUI/Model/Job/ParameterBackup.h        | 2 +-
 GUI/Model/Job/ParameterTreeItems.cpp   | 5 +++--
 GUI/Model/Job/ParameterTreeItems.h     | 2 +-
 GUI/Model/Sample/CoreAndShellItem.cpp  | 4 ++--
 GUI/View/Manager/ProjectManager.cpp    | 3 ++-
 GUI/View/Tuning/FitParameterWidget.cpp | 3 ++-
 12 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index cfd3ef5e9ca..9ee84ffbff6 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -36,7 +36,7 @@ const QString YAxis("YAxis");
 } // namespace
 
 
-DataItem::DataItem(QString  modelType)
+DataItem::DataItem(QString modelType)
     : TYPE(std::move(modelType))
     , m_fname("undefined")
     , m_xAxis(std::make_unique<BasicAxisItem>())
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 8196f390c76..50b60a90bf5 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -34,7 +34,7 @@ class MessageService;
 class DataItem : public QObject {
     Q_OBJECT
 protected:
-    explicit DataItem(QString  modelType);
+    explicit DataItem(QString modelType);
 
 public:
     ~DataItem();
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index 2af8e505b71..e0e60d85635 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -676,8 +676,8 @@ void OffspecInstrumentItem::readFrom(QXmlStreamReader* r)
 
 GISASInstrumentItem::GISASInstrumentItem()
 {
-    m_detectorItem.reset(new DetectorItem());
-    m_beamItem.reset(new BeamItem());
+    m_detectorItem = std::make_unique<DetectorItem>();
+    m_beamItem = std::make_unique<BeamItem>();
 }
 
 std::vector<int> GISASInstrumentItem::shape() const
diff --git a/GUI/Model/Job/FitParameterItem.cpp b/GUI/Model/Job/FitParameterItem.cpp
index 476afa47bf5..0e43193571c 100644
--- a/GUI/Model/Job/FitParameterItem.cpp
+++ b/GUI/Model/Job/FitParameterItem.cpp
@@ -35,7 +35,7 @@ const QString BaseData("BaseData");
 } // namespace Tag
 } // namespace
 
-FitTypeItem::FitTypeItem(ComboProperty  type, QObject* parent)
+FitTypeItem::FitTypeItem(ComboProperty type, QObject* parent)
     : QObject(parent)
     , m_type(std::move(type))
 {
diff --git a/GUI/Model/Job/FitParameterItem.h b/GUI/Model/Job/FitParameterItem.h
index a5d580e02d9..a2285cf9716 100644
--- a/GUI/Model/Job/FitParameterItem.h
+++ b/GUI/Model/Job/FitParameterItem.h
@@ -25,7 +25,7 @@ class FitParameterLinkItem;
 class FitTypeItem : public QObject {
     Q_OBJECT
 public:
-    explicit FitTypeItem(ComboProperty  type, QObject* parent = nullptr);
+    explicit FitTypeItem(ComboProperty type, QObject* parent = nullptr);
 
     const ComboProperty& type() const { return m_type; }
     void setType(const ComboProperty& c) { m_type = c; }
diff --git a/GUI/Model/Job/ParameterBackup.cpp b/GUI/Model/Job/ParameterBackup.cpp
index ae3ffef4bad..403a0b8cfd8 100644
--- a/GUI/Model/Job/ParameterBackup.cpp
+++ b/GUI/Model/Job/ParameterBackup.cpp
@@ -26,7 +26,7 @@ const QString BackupValue("BackupValue");
 } // namespace Tag
 } // namespace
 
-ParameterBackup::ParameterBackup(QString  title)
+ParameterBackup::ParameterBackup(QString title)
     : m_title(std::move(title))
 {
 }
diff --git a/GUI/Model/Job/ParameterBackup.h b/GUI/Model/Job/ParameterBackup.h
index 5b48308d0f9..8cf056a892c 100644
--- a/GUI/Model/Job/ParameterBackup.h
+++ b/GUI/Model/Job/ParameterBackup.h
@@ -22,7 +22,7 @@
 
 class ParameterBackup {
 public:
-    ParameterBackup(QString  title = "");
+    ParameterBackup(QString title = "");
 
     QString title() const { return m_title; }
     void setTitle(const QString& title) { m_title = title; }
diff --git a/GUI/Model/Job/ParameterTreeItems.cpp b/GUI/Model/Job/ParameterTreeItems.cpp
index 3c923c5aa62..52c99b26f81 100644
--- a/GUI/Model/Job/ParameterTreeItems.cpp
+++ b/GUI/Model/Job/ParameterTreeItems.cpp
@@ -15,6 +15,7 @@
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "Base/Util/Assert.h"
 #include "GUI/Support/XML/UtilXML.h"
+#include <memory>
 #include <utility>
 
 namespace {
@@ -50,7 +51,7 @@ ParameterItem* findParameterItem(QObject* item, const QString& link)
 //  class ParameterLabelItem
 //  ************************************************************************************************
 
-ParameterLabelItem::ParameterLabelItem(QString  title, QObject* parent)
+ParameterLabelItem::ParameterLabelItem(QString title, QObject* parent)
     : QObject(parent)
     , m_title(std::move(title))
 {
@@ -147,7 +148,7 @@ QString ParameterItem::titleForFitItem() const
 
 ParameterContainerItem::ParameterContainerItem()
 {
-    m_parameterTreeRoot.reset(new QObject());
+    m_parameterTreeRoot = std::make_unique<QObject>();
 }
 
 void ParameterContainerItem::writeTo(QXmlStreamWriter* w) const
diff --git a/GUI/Model/Job/ParameterTreeItems.h b/GUI/Model/Job/ParameterTreeItems.h
index 21f2591982e..848b579b9e6 100644
--- a/GUI/Model/Job/ParameterTreeItems.h
+++ b/GUI/Model/Job/ParameterTreeItems.h
@@ -31,7 +31,7 @@
 class ParameterLabelItem : public QObject {
     Q_OBJECT
 public:
-    ParameterLabelItem(QString  title, QObject* parent);
+    ParameterLabelItem(QString title, QObject* parent);
 
     QString title() const { return m_title; }
     void setTitle(const QString& title) { m_title = title; }
diff --git a/GUI/Model/Sample/CoreAndShellItem.cpp b/GUI/Model/Sample/CoreAndShellItem.cpp
index 4f50a590e37..d6b9af0abc1 100644
--- a/GUI/Model/Sample/CoreAndShellItem.cpp
+++ b/GUI/Model/Sample/CoreAndShellItem.cpp
@@ -154,7 +154,7 @@ ParticleItem* CoreAndShellItem::coreItem() const
 
 ParticleItem* CoreAndShellItem::createCoreItem(const MaterialModel* materials)
 {
-    m_core.reset(new ParticleItem(materials));
+    m_core = std::make_unique<ParticleItem>(materials);
     m_core->setMaterial(materials->defaultCoreMaterialItem());
     return m_core.get();
 }
@@ -166,7 +166,7 @@ ParticleItem* CoreAndShellItem::shellItem() const
 
 ParticleItem* CoreAndShellItem::createShellItem(const MaterialModel* materials)
 {
-    m_shell.reset(new ParticleItem(materials));
+    m_shell = std::make_unique<ParticleItem>(materials);
     m_shell->setMaterial(materials->defaultParticleMaterialItem());
 
     // position is not used for shell item
diff --git a/GUI/View/Manager/ProjectManager.cpp b/GUI/View/Manager/ProjectManager.cpp
index a81461ef59d..1af6318058c 100644
--- a/GUI/View/Manager/ProjectManager.cpp
+++ b/GUI/View/Manager/ProjectManager.cpp
@@ -28,6 +28,7 @@
 #include <QFileDialog>
 #include <QMessageBox>
 #include <QSettings>
+#include <memory>
 
 namespace {
 
@@ -193,7 +194,7 @@ AutosaveController* ProjectManager::autosaveController() const
 void ProjectManager::setAutosaveEnabled(bool value)
 {
     if (value)
-        m_autosave.reset(new AutosaveController());
+        m_autosave = std::make_unique<AutosaveController>();
     else
         m_autosave.reset();
 
diff --git a/GUI/View/Tuning/FitParameterWidget.cpp b/GUI/View/Tuning/FitParameterWidget.cpp
index 5d1e886abef..6b4c15b6155 100644
--- a/GUI/View/Tuning/FitParameterWidget.cpp
+++ b/GUI/View/Tuning/FitParameterWidget.cpp
@@ -28,6 +28,7 @@
 #include <QMenu>
 #include <QVBoxLayout>
 #include <boost/polymorphic_cast.hpp>
+#include <memory>
 
 FitParameterWidget::FitParameterWidget()
     : m_treeView(new QTreeView)
@@ -250,7 +251,7 @@ void FitParameterWidget::init_fit_model()
 {
     m_treeView->setModel(nullptr);
 
-    m_fitParameterModel.reset(new FitParameterModel(fitContainerItem(), m_job_item));
+    m_fitParameterModel = std::make_unique<FitParameterModel>(fitContainerItem(), m_job_item);
     m_treeView->setModel(m_fitParameterModel.get());
 
     connect(m_fitParameterModel.get(), &FitParameterModel::dataChanged, this,
-- 
GitLab


From 5961cabbf552d7f3340a80cceabec13538959971 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:14:40 +0100
Subject: [PATCH 12/33] ready for cppcoreguidelines-explicit-virtual-functions
 and llvm-qualified-auto

---
 .clang-tidy | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 50f4bdfd1fc..1a9d5f3a777 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,11 +16,11 @@ Checks: '*,
 
 
 -*,
--cppcoreguidelines-explicit-virtual-functions,
--llvm-qualified-auto,
-misc-uniqueptr-reset-release,
-modernize-avoid-bind,
-modernize-make-unique,
+cppcoreguidelines-explicit-virtual-functions,
+llvm-qualified-auto,
+-misc-uniqueptr-reset-release,
+-modernize-avoid-bind,
+-modernize-make-unique,
 -modernize-pass-by-value,
 -modernize-raw-string-literal,
 -modernize-use-using,
-- 
GitLab


From df35ac346238b19aee306b75330cfd56d6407d34 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:19:38 +0100
Subject: [PATCH 13/33] tidy switch off all

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 1a9d5f3a777..d37babccc8a 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,8 +16,8 @@ Checks: '*,
 
 
 -*,
-cppcoreguidelines-explicit-virtual-functions,
-llvm-qualified-auto,
+-cppcoreguidelines-explicit-virtual-functions,
+-llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
 -modernize-avoid-bind,
 -modernize-make-unique,
-- 
GitLab


From bf05831bc0750bb791a01ed10e4359f2c9b94a50 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:24:28 +0100
Subject: [PATCH 14/33] tidy + member-init checks

---
 .clang-tidy | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/.clang-tidy b/.clang-tidy
index d37babccc8a..2057eed9d3f 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,6 +16,11 @@ Checks: '*,
 
 
 -*,
+-performance-inefficient-vector-operation,
+-performance-unnecessary-copy-initialization,
+-*-move-const-arg,
+modernize-use-default-member-init,
+readability-redundant-member-init,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
-- 
GitLab


From 1d68ef74670137c7fd0444399ed70c0698844397 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:26:03 +0100
Subject: [PATCH 15/33] ready for tidy/readability-redundant-member-init

---
 .clang-tidy | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.clang-tidy b/.clang-tidy
index 2057eed9d3f..283ff566e56 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -19,7 +19,7 @@ Checks: '*,
 -performance-inefficient-vector-operation,
 -performance-unnecessary-copy-initialization,
 -*-move-const-arg,
-modernize-use-default-member-init,
+-modernize-use-default-member-init,
 readability-redundant-member-init,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
-- 
GitLab


From baf4270a573397b5d040f725b5303f8561407cd5 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:30:42 +0100
Subject: [PATCH 16/33] tidy/readability-redundant-member-init + manual
 correction

---
 Device/Beam/Beam.cpp                  |  3 +--
 Device/Detector/IDetector.cpp         |  3 +--
 GUI/Model/Mask/MaskItems.cpp          |  1 -
 GUI/Model/Model/FitParameterModel.cpp |  3 +--
 GUI/Model/Sample/MaterialItem.cpp     |  3 +--
 GUI/View/Sample/HeinzFormLayout.cpp   |  3 +--
 Sim/Fitting/ObjectiveMetric.cpp       | 15 +++------------
 7 files changed, 8 insertions(+), 23 deletions(-)

diff --git a/Device/Beam/Beam.cpp b/Device/Beam/Beam.cpp
index 2b9e176c66d..739018a9920 100644
--- a/Device/Beam/Beam.cpp
+++ b/Device/Beam/Beam.cpp
@@ -24,8 +24,7 @@ using std::numbers::pi;
 //... Constructors, destructors:
 
 Beam::Beam(double intensity, double wavelength, double alpha, double phi)
-    : INode()
-    , m_intensity(intensity)
+    : m_intensity(intensity)
     , m_wavelength(wavelength)
     , m_alpha(alpha)
     , m_phi(phi)
diff --git a/Device/Detector/IDetector.cpp b/Device/Detector/IDetector.cpp
index dee16f00e66..ed6451990cf 100644
--- a/Device/Detector/IDetector.cpp
+++ b/Device/Detector/IDetector.cpp
@@ -76,8 +76,7 @@ IDetector::IDetector(Frame* frame)
 }
 
 IDetector::IDetector(const IDetector& other)
-    : INode()
-    , m_explicitROI(other.m_explicitROI)
+    : m_explicitROI(other.m_explicitROI)
     , m_frame(other.m_frame->clone())
     , m_polAnalyzer(other.m_polAnalyzer)
     , m_resolution(other.m_resolution ? other.m_resolution->clone() : nullptr)
diff --git a/GUI/Model/Mask/MaskItems.cpp b/GUI/Model/Mask/MaskItems.cpp
index 86b47f0122b..dd866f8e6dc 100644
--- a/GUI/Model/Mask/MaskItems.cpp
+++ b/GUI/Model/Mask/MaskItems.cpp
@@ -262,7 +262,6 @@ void RectangleItem::readFrom(QXmlStreamReader* r)
 /* ------------------------------------------------------------------------- */
 
 RegionOfInterestItem::RegionOfInterestItem()
-    : RectangleItem()
 {
     setMaskName("RegionOfInterest");
     setMaskValue(false);
diff --git a/GUI/Model/Model/FitParameterModel.cpp b/GUI/Model/Model/FitParameterModel.cpp
index 427e7a66bd8..7c747f3f907 100644
--- a/GUI/Model/Model/FitParameterModel.cpp
+++ b/GUI/Model/Model/FitParameterModel.cpp
@@ -21,8 +21,7 @@
 #include <QMimeData>
 
 FitParameterModel::FitParameterModel(FitParameterContainerItem* fitParContainer, JobItem* jobItem)
-    : QAbstractItemModel()
-    , m_fitParameterContainer(fitParContainer)
+    : m_fitParameterContainer(fitParContainer)
     , m_jobItem(jobItem)
 {
     addColumn(COL_NAME, "Name", "Name of fit parameter");
diff --git a/GUI/Model/Sample/MaterialItem.cpp b/GUI/Model/Sample/MaterialItem.cpp
index 1a6177069c6..b6636aa28c7 100644
--- a/GUI/Model/Sample/MaterialItem.cpp
+++ b/GUI/Model/Sample/MaterialItem.cpp
@@ -55,8 +55,7 @@ MaterialItem::MaterialItem()
 }
 
 MaterialItem::MaterialItem(const MaterialItem& other)
-    : QObject()
-    , m_name(other.m_name)
+    : m_name(other.m_name)
     , m_id(other.m_id)
     , m_color(other.m_color)
     , m_magnetization(other.m_magnetization)
diff --git a/GUI/View/Sample/HeinzFormLayout.cpp b/GUI/View/Sample/HeinzFormLayout.cpp
index 80c511789a4..ca9600501a8 100644
--- a/GUI/View/Sample/HeinzFormLayout.cpp
+++ b/GUI/View/Sample/HeinzFormLayout.cpp
@@ -37,8 +37,7 @@ QLabel* createBoldLabel(const QString& text)
 
 
 HeinzFormLayout::HeinzFormLayout(SampleEditorController* ec)
-    : QFormLayout()
-    , m_ec(ec)
+    : m_ec(ec)
 {
     QFormLayout::setFormAlignment(Qt::AlignLeft | Qt::AlignBottom);
     QFormLayout::setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
diff --git a/Sim/Fitting/ObjectiveMetric.cpp b/Sim/Fitting/ObjectiveMetric.cpp
index 8b0151c6600..03350fb2404 100644
--- a/Sim/Fitting/ObjectiveMetric.cpp
+++ b/Sim/Fitting/ObjectiveMetric.cpp
@@ -121,10 +121,7 @@ double Chi2Metric::computeFromArrays(std::vector<double> sim_data,
 
 // ----------------------- Poisson-like metric ---------------------------
 
-PoissonLikeMetric::PoissonLikeMetric()
-    : Chi2Metric()
-{
-}
+PoissonLikeMetric::PoissonLikeMetric() {}
 
 PoissonLikeMetric* PoissonLikeMetric::clone() const
 {
@@ -201,10 +198,7 @@ double LogMetric::computeFromArrays(std::vector<double> sim_data,
 
 // ----------------------- Relative difference ---------------------------
 
-meanRelativeDifferenceMetric::meanRelativeDifferenceMetric()
-    : Chi2Metric()
-{
-}
+meanRelativeDifferenceMetric::meanRelativeDifferenceMetric() {}
 
 meanRelativeDifferenceMetric* meanRelativeDifferenceMetric::clone() const
 {
@@ -231,10 +225,7 @@ double meanRelativeDifferenceMetric::computeFromArrays(std::vector<double> sim_d
 
 // ----------------------- RQ4 metric ---------------------------
 
-RQ4Metric::RQ4Metric()
-    : Chi2Metric()
-{
-}
+RQ4Metric::RQ4Metric() {}
 
 RQ4Metric* RQ4Metric::clone() const
 {
-- 
GitLab


From f8860a2e9203746ce9d5a00b5d71d86bc61f3dfb Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:30:58 +0100
Subject: [PATCH 17/33] ready for tidy/modernize-use-default-member-init

---
 .clang-tidy | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 283ff566e56..78f394f4f35 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -19,8 +19,8 @@ Checks: '*,
 -performance-inefficient-vector-operation,
 -performance-unnecessary-copy-initialization,
 -*-move-const-arg,
--modernize-use-default-member-init,
-readability-redundant-member-init,
+modernize-use-default-member-init,
+-readability-redundant-member-init,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
-- 
GitLab


From 4905f88a442516828c6baec84a38abb9621efec2 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:37:24 +0100
Subject: [PATCH 18/33] tidy/modernize-use-default-member-init + manual
 corrections

---
 GUI/View/Instrument/InstrumentLibraryEditor.cpp | 1 -
 GUI/View/Item/ItemViewOverlayButtons.cpp        | 3 +--
 GUI/View/Sample/SampleEditor.cpp                | 1 -
 GUI/View/Setup/MaskEditorToolpanel.cpp          | 1 -
 4 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.cpp b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
index fa94c2d8084..eae70270b83 100644
--- a/GUI/View/Instrument/InstrumentLibraryEditor.cpp
+++ b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
@@ -300,7 +300,6 @@ void InstrumentLibraryEditor::onInstrumentChangedByEditor()
 
 InstrumentLibraryEditor::TreeModel::TreeModel(QObject* parent, InstrumentModel* model)
     : InstrumentsTreeModel(parent, model)
-    , m_newInstrument(nullptr)
 {
 }
 
diff --git a/GUI/View/Item/ItemViewOverlayButtons.cpp b/GUI/View/Item/ItemViewOverlayButtons.cpp
index 497d9f0c99d..6ec49223e2d 100644
--- a/GUI/View/Item/ItemViewOverlayButtons.cpp
+++ b/GUI/View/Item/ItemViewOverlayButtons.cpp
@@ -39,7 +39,7 @@ protected:
     void mouseDoubleClickEvent(QMouseEvent* event) override;
 
 private:
-    bool m_hover;
+    bool m_hover{false};
     QAbstractItemView* m_view;
     QModelIndex m_index;
     Qt::Alignment m_horizontalAlignment;
@@ -61,7 +61,6 @@ public:
 
 ItemViewOverlayWidget::ItemViewOverlayWidget(QAbstractItemView* view, const QModelIndex& index)
     : QWidget(view)
-    , m_hover(false)
     , m_view(view)
     , m_index(index)
     , m_horizontalAlignment(Qt::AlignRight)
diff --git a/GUI/View/Sample/SampleEditor.cpp b/GUI/View/Sample/SampleEditor.cpp
index 78c8a7af6f6..47cde94bc51 100644
--- a/GUI/View/Sample/SampleEditor.cpp
+++ b/GUI/View/Sample/SampleEditor.cpp
@@ -28,7 +28,6 @@
 SampleEditor::SampleEditor(QWidget* parent, ProjectDocument* document)
     : QScrollArea(parent)
     , m_currentSampleWidget(nullptr)
-    , m_currentSample(nullptr)
     , m_document(document)
 {
     QScrollArea::setWidgetResizable(true);
diff --git a/GUI/View/Setup/MaskEditorToolpanel.cpp b/GUI/View/Setup/MaskEditorToolpanel.cpp
index be9d8bb0666..d620ca0b29f 100644
--- a/GUI/View/Setup/MaskEditorToolpanel.cpp
+++ b/GUI/View/Setup/MaskEditorToolpanel.cpp
@@ -30,7 +30,6 @@ MaskEditorToolpanel::MaskEditorToolpanel()
     : m_listView(new QListView)
     , m_maskContainerModel(nullptr)
     , m_currentMaskItem(nullptr)
-    , m_inhibitSelectionChange(false)
 {
     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
     setObjectName(QLatin1String("MaskEditorToolPanel"));
-- 
GitLab


From 3f5bbd0a4c204a0ffbabeee4703b19124429b9b8 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:37:37 +0100
Subject: [PATCH 19/33] ready for next 3

---
 .clang-tidy | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 78f394f4f35..6792ec0edca 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,10 +16,10 @@ Checks: '*,
 
 
 -*,
--performance-inefficient-vector-operation,
--performance-unnecessary-copy-initialization,
--*-move-const-arg,
-modernize-use-default-member-init,
+performance-inefficient-vector-operation,
+performance-unnecessary-copy-initialization,
+*-move-const-arg,
+-modernize-use-default-member-init,
 -readability-redundant-member-init,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
-- 
GitLab


From 9b2d421f391c0362f03c6347dac6d9b0301fdf49 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:42:02 +0100
Subject: [PATCH 20/33] 
 tidy/performance-inefficient-vector-operation,performance-unnecessary-copy-initialization,*-move-const-arg

---
 Base/Axis/Scale.cpp                           | 1 +
 Base/Py/PyFmt.cpp                             | 2 ++
 Device/Mask/Polygon.cpp                       | 1 +
 GUI/View/Instrument/DistributionSelector.cpp  | 2 +-
 Param/Distrib/Distributions.cpp               | 1 +
 Resample/Processed/Slicer.cpp                 | 2 +-
 Sim/Export/SampleToPython.cpp                 | 2 +-
 Tests/Functional/Mumufit/ResidualTestPlan.cpp | 1 +
 Tests/Unit/Fit/MultiOptionTest.cpp            | 2 +-
 Tests/Unit/Resample/MaterialTest.cpp          | 2 +-
 10 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/Base/Axis/Scale.cpp b/Base/Axis/Scale.cpp
index bf055e547ad..94bf17a7a50 100644
--- a/Base/Axis/Scale.cpp
+++ b/Base/Axis/Scale.cpp
@@ -116,6 +116,7 @@ double Scale::binCenter(size_t i) const
 std::vector<double> Scale::binCenters() const
 {
     std::vector<double> result;
+    result.reserve(m_bins.size());
     for (const Bin1D& b : m_bins)
         result.emplace_back(b.center());
     return result;
diff --git a/Base/Py/PyFmt.cpp b/Base/Py/PyFmt.cpp
index a1075aa0710..266f120c0c1 100644
--- a/Base/Py/PyFmt.cpp
+++ b/Base/Py/PyFmt.cpp
@@ -152,6 +152,7 @@ std::string Py::Fmt::printString(const std::string& value)
 std::string Py::Fmt::printArguments(const std::vector<std::pair<double, std::string>>& arguments)
 {
     std::vector<std::string> args;
+    args.reserve(arguments.size());
     for (const auto& argument : arguments)
         args.push_back(Py::Fmt::printValue(argument.first, argument.second));
     return Base::String::join(args, ", ");
@@ -161,6 +162,7 @@ std::string Py::Fmt::printArguments(
     const std::vector<std::pair<std::variant<double, int>, std::string>>& arguments)
 {
     std::vector<std::string> args;
+    args.reserve(arguments.size());
     for (const auto& argument : arguments)
         args.push_back(Py::Fmt::printValue(argument.first, argument.second));
     return Base::String::join(args, ", ");
diff --git a/Device/Mask/Polygon.cpp b/Device/Mask/Polygon.cpp
index cd3b98c91e2..f81d2b84237 100644
--- a/Device/Mask/Polygon.cpp
+++ b/Device/Mask/Polygon.cpp
@@ -41,6 +41,7 @@ PolygonPrivate::PolygonPrivate(const std::vector<double>& x, const std::vector<d
 PolygonPrivate::PolygonPrivate(const std::vector<std::pair<double, double>>& pts)
 {
     std::vector<point_t> points;
+    points.reserve(pts.size());
     for (const std::pair<double, double>& p : pts)
         points.emplace_back(p.first, p.second);
     boost::geometry::assign_points(polygon, points);
diff --git a/GUI/View/Instrument/DistributionSelector.cpp b/GUI/View/Instrument/DistributionSelector.cpp
index b9af4ed4aa6..a1ed0b529d6 100644
--- a/GUI/View/Instrument/DistributionSelector.cpp
+++ b/GUI/View/Instrument/DistributionSelector.cpp
@@ -27,7 +27,7 @@ DistributionSelector::DistributionSelector(std::optional<MeanConfig> mean_config
                                            BeamDistributionItem* item, bool allow_distr)
     : QWidget(parent)
     , m_item(item)
-    , m_meanConfig(std::move(mean_config))
+    , m_meanConfig(mean_config)
     , m_distributions(distributions)
 {
     ASSERT(item);
diff --git a/Param/Distrib/Distributions.cpp b/Param/Distrib/Distributions.cpp
index 5588f4904f3..63215d1acbd 100644
--- a/Param/Distrib/Distributions.cpp
+++ b/Param/Distrib/Distributions.cpp
@@ -148,6 +148,7 @@ std::vector<ParameterSample> DistributionGate::distributionSamples() const
 {
     std::vector<double> xx = equidistantPointsInRange(nSamples(), m_min, m_max);
     std::vector<ParameterSample> result;
+    result.reserve(xx.size());
     for (double x : xx)
         result.push_back({x, 1. / xx.size()});
     return result;
diff --git a/Resample/Processed/Slicer.cpp b/Resample/Processed/Slicer.cpp
index fb481f0e6ff..31d682032f7 100644
--- a/Resample/Processed/Slicer.cpp
+++ b/Resample/Processed/Slicer.cpp
@@ -179,7 +179,7 @@ IReParticle* processBasis(const IParticle* basis, const Material& ambientMat)
     const IRotation* rot = p->rotation();
     auto particleSlice = std::make_unique<ReParticle>(
         p->pFormfactor()->clone(), new const R3(p->particlePosition()),
-        rot && !rot->isIdentity() ? std::move(new const RotMatrix(rot->rotMatrix())) : nullptr);
+        rot && !rot->isIdentity() ? new const RotMatrix(rot->rotMatrix()) : nullptr);
     if (!particleSlice)
         return {};
     double volume = particleSlice->volume();
diff --git a/Sim/Export/SampleToPython.cpp b/Sim/Export/SampleToPython.cpp
index fc9442402c3..d276f15736b 100644
--- a/Sim/Export/SampleToPython.cpp
+++ b/Sim/Export/SampleToPython.cpp
@@ -88,7 +88,7 @@ std::string defineMaterials(const MaterialKeyHandler& matHandler)
         {MATERIAL_TYPES::RefractiveMaterial, "RefractiveMaterial"},
         {MATERIAL_TYPES::MaterialBySLD, "MaterialBySLD"}};
 
-    const auto themap = matHandler.materialMap();
+    const auto& themap = matHandler.materialMap();
     if (themap.empty())
         return "";
     std::ostringstream result;
diff --git a/Tests/Functional/Mumufit/ResidualTestPlan.cpp b/Tests/Functional/Mumufit/ResidualTestPlan.cpp
index 70b630aa22c..4ba37bfe067 100644
--- a/Tests/Functional/Mumufit/ResidualTestPlan.cpp
+++ b/Tests/Functional/Mumufit/ResidualTestPlan.cpp
@@ -43,6 +43,7 @@ bool ResidualTestPlan::checkMinimizer(Minimizer& minimizer) const
 void ResidualTestPlan::finalizeParameters()
 {
     std::vector<double> pars;
+    pars.reserve(m_parameter_references.size());
     for (const auto& plan : m_parameter_references)
         pars.push_back(plan.expected_value);
 
diff --git a/Tests/Unit/Fit/MultiOptionTest.cpp b/Tests/Unit/Fit/MultiOptionTest.cpp
index ef9b07d3284..d304fe5bdf2 100644
--- a/Tests/Unit/Fit/MultiOptionTest.cpp
+++ b/Tests/Unit/Fit/MultiOptionTest.cpp
@@ -49,7 +49,7 @@ TEST(MultiOptionTest, Copying)
     const double double_value(2.0);
     MultiOption opt(name, double_value, description);
 
-    MultiOption copy(opt);
+    const MultiOption& copy(opt);
     EXPECT_EQ(name, copy.name());
     EXPECT_EQ(description, copy.description());
     EXPECT_EQ(double_value, copy.get<double>());
diff --git a/Tests/Unit/Resample/MaterialTest.cpp b/Tests/Unit/Resample/MaterialTest.cpp
index 1a8179e1bd1..9fcca2f5c0f 100644
--- a/Tests/Unit/Resample/MaterialTest.cpp
+++ b/Tests/Unit/Resample/MaterialTest.cpp
@@ -214,7 +214,7 @@ TEST(MaterialTest, MaterialCopy)
     R3 magnetism = R3(3.0, 4.0, 5.0);
     Material material = RefractiveMaterial("MagMaterial", refIndex, magnetism);
 
-    Material copy = material;
+    const Material& copy = material;
     EXPECT_EQ(material_data, copy.refractiveIndex_or_SLD());
     EXPECT_EQ(magnetism, copy.magnetization());
     EXPECT_TRUE(material == copy);
-- 
GitLab


From 73a73adba80cd5590e467a2bd5df282cd413377d Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 08:48:53 +0100
Subject: [PATCH 21/33] corr warnings

---
 Device/Detector/IDetector.cpp     | 3 ++-
 GUI/Model/Sample/MaterialItem.cpp | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/Device/Detector/IDetector.cpp b/Device/Detector/IDetector.cpp
index ed6451990cf..dee16f00e66 100644
--- a/Device/Detector/IDetector.cpp
+++ b/Device/Detector/IDetector.cpp
@@ -76,7 +76,8 @@ IDetector::IDetector(Frame* frame)
 }
 
 IDetector::IDetector(const IDetector& other)
-    : m_explicitROI(other.m_explicitROI)
+    : INode()
+    , m_explicitROI(other.m_explicitROI)
     , m_frame(other.m_frame->clone())
     , m_polAnalyzer(other.m_polAnalyzer)
     , m_resolution(other.m_resolution ? other.m_resolution->clone() : nullptr)
diff --git a/GUI/Model/Sample/MaterialItem.cpp b/GUI/Model/Sample/MaterialItem.cpp
index b6636aa28c7..1a6177069c6 100644
--- a/GUI/Model/Sample/MaterialItem.cpp
+++ b/GUI/Model/Sample/MaterialItem.cpp
@@ -55,7 +55,8 @@ MaterialItem::MaterialItem()
 }
 
 MaterialItem::MaterialItem(const MaterialItem& other)
-    : m_name(other.m_name)
+    : QObject()
+    , m_name(other.m_name)
     , m_id(other.m_id)
     , m_color(other.m_color)
     , m_magnetization(other.m_magnetization)
-- 
GitLab


From bf244972e7c77ab170a67d05a6acfb563f86d36f Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 09:08:53 +0100
Subject: [PATCH 22/33] release -> reset

---
 .clang-tidy                          | 13 +++++++++----
 GUI/Support/Data/JobWorker.cpp       |  2 +-
 GUI/View/Scene/MaskGraphicsScene.cpp |  2 +-
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 6792ec0edca..a73842cf4a9 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,11 +16,16 @@ Checks: '*,
 
 
 -*,
-performance-inefficient-vector-operation,
-performance-unnecessary-copy-initialization,
-*-move-const-arg,
+-*avoid-c-arrays,
+-*narrowing-conversions,
+-cppcoreguidelines-prefer-member-initializer,
+cppcoreguidelines-owning-memory,
+-bugprone-unused-return-value,
+
+-performance-inefficient-vector-operation,
+-performance-unnecessary-copy-initialization,
+-hicpp-move-const-arg,
 -modernize-use-default-member-init,
--readability-redundant-member-init,
 -cppcoreguidelines-explicit-virtual-functions,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
diff --git a/GUI/Support/Data/JobWorker.cpp b/GUI/Support/Data/JobWorker.cpp
index 79062ada3db..7eb7501474a 100644
--- a/GUI/Support/Data/JobWorker.cpp
+++ b/GUI/Support/Data/JobWorker.cpp
@@ -44,7 +44,7 @@ void JobWorker::start()
     m_terminate_request_flag = false;
     m_simulation_start = QDateTime::currentDateTime();
     m_simulation_end = QDateTime();
-    m_result.release();
+    m_result.reset();
     emit started();
 
     try {
diff --git a/GUI/View/Scene/MaskGraphicsScene.cpp b/GUI/View/Scene/MaskGraphicsScene.cpp
index 4ce0e1acc4b..0caac8928b3 100644
--- a/GUI/View/Scene/MaskGraphicsScene.cpp
+++ b/GUI/View/Scene/MaskGraphicsScene.cpp
@@ -559,7 +559,7 @@ void MaskGraphicsScene::setDrawingInProgress(bool value)
     if (value)
         gProjectDocument.value()->setModified(); // manual mask creation
     else
-        m_currentItem.release();
+        m_currentItem.reset();
 }
 
 //! Sets the state of all views in pan&zoom mode.
-- 
GitLab


From 462184b92421f40d224e74d4e57b7a591ae20d4e Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 09:16:55 +0100
Subject: [PATCH 23/33] tidy/cppcoreguidelines-prefer-member-initializer +
 manual corrections

---
 .clang-tidy                                     | 16 +++++++---------
 GUI/Model/Beam/GrazingScanItem.cpp              |  2 +-
 GUI/Model/Sample/LayerItem.cpp                  |  4 ++--
 GUI/Model/Sample/MaterialItem.cpp               |  3 ++-
 GUI/Model/Sample/SampleItem.cpp                 |  3 ++-
 GUI/Support/Data/SimulationOptionsItem.cpp      | 10 +---------
 GUI/Support/Data/SimulationOptionsItem.h        | 16 ++++++++--------
 GUI/View/Access/DataPropertyWidget.cpp          |  2 +-
 GUI/View/Canvas/IntensityDataCanvas.cpp         |  8 ++++----
 GUI/View/Canvas/MaskEditorActions.cpp           |  2 +-
 GUI/View/Canvas/SpecularDataCanvas.cpp          |  6 ++----
 GUI/View/Combo/ItemComboToolbar.cpp             |  4 +---
 GUI/View/Combo/ItemComboWidget.cpp              |  3 ++-
 GUI/View/Device/BackgroundForm.cpp              |  2 +-
 GUI/View/Device/FootprintForm.cpp               |  3 +--
 GUI/View/Device/SphericalAxisForm.cpp           |  6 +++---
 GUI/View/Fit/FitActivityPanel.cpp               |  7 ++++---
 GUI/View/Fit/FitSessionWidget.cpp               |  2 +-
 GUI/View/FitControl/MinimizerSettingsWidget.cpp |  3 ++-
 GUI/View/Frame/Fit1DFrame.cpp                   |  5 ++---
 GUI/View/Frame/Fit2DFrame.cpp                   |  5 ++---
 GUI/View/Frame/Plot2DFrame.cpp                  |  5 ++---
 GUI/View/Frame/SpecularFrame.cpp                |  5 ++---
 GUI/View/Instrument/AlphaScanEditor.cpp         |  3 ++-
 GUI/View/Instrument/DistributionEditor.cpp      |  4 ++--
 GUI/View/Instrument/InstrumentListing.cpp       |  6 +++---
 GUI/View/Instrument/InstrumentView.cpp          |  6 ++++--
 GUI/View/Job/JobView.cpp                        |  6 +++---
 GUI/View/JobControl/JobListing.cpp              |  9 ++++++---
 GUI/View/JobControl/JobPropertiesWidget.cpp     |  9 +++++----
 GUI/View/JobControl/JobSelector.cpp             |  5 +++--
 GUI/View/Manager/NewProjectDialog.cpp           | 12 +++++-------
 GUI/View/Numeric/DoubleLineEdit.cpp             |  2 +-
 GUI/View/Plotter/ColorMap.cpp                   |  6 +++---
 GUI/View/Project/SimulationView.cpp             | 15 ++++++++++-----
 GUI/View/Sample/CompoundForm.cpp                |  2 +-
 GUI/View/Sample/InterferenceForm.cpp            |  3 ++-
 GUI/View/Sample/LayerForm.cpp                   |  7 ++++---
 GUI/View/Sample/LayerForm.h                     |  4 ++--
 GUI/View/Sample/MaterialInplaceForm.cpp         |  2 +-
 GUI/View/Sample/MesocrystalForm.cpp             |  9 ++++++---
 GUI/View/Sample/ParticleLayoutForm.cpp          |  2 +-
 GUI/View/Sample/SampleForm.cpp                  |  4 ++--
 GUI/View/Sample/SampleListing.cpp               | 11 +++++++----
 GUI/View/Sample/SampleView.cpp                  |  4 ++--
 GUI/View/Sample/SampleView.h                    |  6 +++---
 GUI/View/Tuning/ParameterBackupWidget.cpp       |  3 ++-
 GUI/View/Widget/GroupBoxes.cpp                  | 10 +++++-----
 Img3D/Plot/AxesPlotter.cpp                      |  3 +--
 49 files changed, 140 insertions(+), 135 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index a73842cf4a9..a5e70ba1d58 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -18,32 +18,30 @@ Checks: '*,
 -*,
 -*avoid-c-arrays,
 -*narrowing-conversions,
--cppcoreguidelines-prefer-member-initializer,
-cppcoreguidelines-owning-memory,
--bugprone-unused-return-value,
 
--performance-inefficient-vector-operation,
--performance-unnecessary-copy-initialization,
--hicpp-move-const-arg,
--modernize-use-default-member-init,
+-bugprone-unused-return-value,
 -cppcoreguidelines-explicit-virtual-functions,
+-cppcoreguidelines-prefer-member-initializer,
+-hicpp-move-const-arg,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
 -modernize-avoid-bind,
 -modernize-make-unique,
 -modernize-pass-by-value,
 -modernize-raw-string-literal,
+-modernize-use-default-member-init,
 -modernize-use-using,
 -performance-for-range-copy,
+-performance-inefficient-vector-operation,
+-performance-unnecessary-copy-initialization,
 -readability-avoid-const-params-in-decls,
 -readability-const-return-type,
--readability-non-const-parameter,
 -readability-container-size-empty,
 -readability-delete-null-pointer,
 -readability-inconsistent-declaration-parameter-name,
+-readability-non-const-parameter,
 -readability-qualified-auto,
 -readability-simplify-boolean-expr,
 
-
 '
 # keep the closing quotation mark
\ No newline at end of file
diff --git a/GUI/Model/Beam/GrazingScanItem.cpp b/GUI/Model/Beam/GrazingScanItem.cpp
index 0c93e0de95d..e0dc4a00c13 100644
--- a/GUI/Model/Beam/GrazingScanItem.cpp
+++ b/GUI/Model/Beam/GrazingScanItem.cpp
@@ -63,13 +63,13 @@ void initDistribution(DistributionItem* newDistribution,
 
 GrazingScanItem::GrazingScanItem()
     : BeamDistributionItem()
+    , m_currentAxisIsUniformAxis(true)
 {
     m_distribution.initWithInitializer("Distribution", "",
                                        DistributionItemCatalog::symmetricTypes(), initDistribution);
 
     m_uniformAlphaAxis = std::make_unique<BasicAxisItem>();
     setAxisPresentationDefaults(m_uniformAlphaAxis.get());
-    m_currentAxisIsUniformAxis = true;
 }
 
 void GrazingScanItem::writeTo(QXmlStreamWriter* w) const
diff --git a/GUI/Model/Sample/LayerItem.cpp b/GUI/Model/Sample/LayerItem.cpp
index 7411e76f3ad..d97c0d19687 100644
--- a/GUI/Model/Sample/LayerItem.cpp
+++ b/GUI/Model/Sample/LayerItem.cpp
@@ -65,14 +65,14 @@ QVector<ItemWithMaterial*> layoutItemsWithMaterial(ParticleLayoutItem* layout)
 
 } // namespace
 
+
 LayerItem::LayerItem(const MaterialModel* materials)
     : ItemWithMaterial(materials)
+    , m_name("Layer")
 {
     m_thickness.init("Thickness (nm)", "Thickness of the layer", 0.0, 3,
                      RealLimits::lowerLimited(0.0), "thickness");
 
-    m_name = "Layer";
-
     m_roughness.init("Top roughness", "Roughness of top interface",
                      RoughnessItemCatalog::Type::Basic);
 }
diff --git a/GUI/Model/Sample/MaterialItem.cpp b/GUI/Model/Sample/MaterialItem.cpp
index 1a6177069c6..ebf9843dc92 100644
--- a/GUI/Model/Sample/MaterialItem.cpp
+++ b/GUI/Model/Sample/MaterialItem.cpp
@@ -36,9 +36,10 @@ const QString Magnetization("Magnetization");
 
 } // namespace
 
+
 MaterialItem::MaterialItem()
+    : m_color(Qt::red)
 {
-    m_color = Qt::red;
     m_id = QUuid::createUuid().toString();
 
     m_delta.init("Delta", "Delta of refractive index (n = 1 - delta + i*beta)", 0.0, 3,
diff --git a/GUI/Model/Sample/SampleItem.cpp b/GUI/Model/Sample/SampleItem.cpp
index bcef950a27c..4b0d1608db9 100644
--- a/GUI/Model/Sample/SampleItem.cpp
+++ b/GUI/Model/Sample/SampleItem.cpp
@@ -33,8 +33,9 @@ const QString ExpandInfoGroupbox("ExpandInfoGroupbox");
 } // namespace
 
 SampleItem::SampleItem()
+    : m_name("Sample")
 {
-    m_name = "Sample";
+
     m_crossCorrelationLength.init("Cross-correlation length (nm)",
                                   "Cross correlation length of roughnesses between interfaces", 0.0,
                                   5, RealLimits::nonnegative(), "cross");
diff --git a/GUI/Support/Data/SimulationOptionsItem.cpp b/GUI/Support/Data/SimulationOptionsItem.cpp
index 971fff418f2..6dc921e74b4 100644
--- a/GUI/Support/Data/SimulationOptionsItem.cpp
+++ b/GUI/Support/Data/SimulationOptionsItem.cpp
@@ -35,16 +35,8 @@ const QString SelectedDataIndex("SelectedDataIndex");
 
 
 SimulationOptionsItem::SimulationOptionsItem()
+    : m_numberOfThreads(std::thread::hardware_concurrency())
 {
-    m_runImmediately = true;
-    m_numberOfThreads = std::thread::hardware_concurrency();
-    m_computationMethodAnalytical = true;
-    m_numberOfMonteCarloPoints = 100;
-    m_useAverageMaterials = false;
-    m_includeSpecularPeak = false;
-    m_selectedInstrumentIndex = -1;
-    m_selectedSampleIndex = -1;
-    m_selectedDataIndex = -1;
 }
 
 bool SimulationOptionsItem::useMonteCarloIntegration() const
diff --git a/GUI/Support/Data/SimulationOptionsItem.h b/GUI/Support/Data/SimulationOptionsItem.h
index df65bf33a79..d9fb1ebbec3 100644
--- a/GUI/Support/Data/SimulationOptionsItem.h
+++ b/GUI/Support/Data/SimulationOptionsItem.h
@@ -58,15 +58,15 @@ public:
     void readFrom(QXmlStreamReader* r);
 
 private:
-    bool m_runImmediately;
+    bool m_runImmediately = true;
     unsigned m_numberOfThreads;
-    bool m_computationMethodAnalytical;
-    unsigned m_numberOfMonteCarloPoints;
-    bool m_useAverageMaterials;
-    bool m_includeSpecularPeak;
-    int m_selectedInstrumentIndex;
-    int m_selectedSampleIndex;
-    int m_selectedDataIndex;
+    bool m_computationMethodAnalytical = true;
+    unsigned m_numberOfMonteCarloPoints = 100;
+    bool m_useAverageMaterials = false;
+    bool m_includeSpecularPeak = false;
+    int m_selectedInstrumentIndex = -1;
+    int m_selectedSampleIndex = -1;
+    int m_selectedDataIndex = -1;
 };
 
 #endif // BORNAGAIN_GUI_SUPPORT_DATA_SIMULATIONOPTIONSITEM_H
diff --git a/GUI/View/Access/DataPropertyWidget.cpp b/GUI/View/Access/DataPropertyWidget.cpp
index 2c433670b95..40b87fae65f 100644
--- a/GUI/View/Access/DataPropertyWidget.cpp
+++ b/GUI/View/Access/DataPropertyWidget.cpp
@@ -23,10 +23,10 @@
 
 DataPropertyWidget::DataPropertyWidget(QWidget* parent)
     : DataAccessWidget(parent)
+    , m_mainLayout(new QFormLayout(this))
 {
     setWindowTitle("Properties");
 
-    m_mainLayout = new QFormLayout(this);
     m_mainLayout->setContentsMargins(8, 20, 8, 8);
     m_mainLayout->setSpacing(5);
 }
diff --git a/GUI/View/Canvas/IntensityDataCanvas.cpp b/GUI/View/Canvas/IntensityDataCanvas.cpp
index f4ab62e5944..dd22d690eed 100644
--- a/GUI/View/Canvas/IntensityDataCanvas.cpp
+++ b/GUI/View/Canvas/IntensityDataCanvas.cpp
@@ -35,12 +35,13 @@ const QString SettingsKeyInterpolation = SettingsGroup + "Interpolation";
 
 } // namespace
 
+
 IntensityDataCanvas::IntensityDataCanvas()
     : DataAccessWidget(nullptr)
     , m_colorMapCanvas(new ColorMapCanvas)
-    , m_resetViewAction(nullptr)
+    , m_resetViewAction(new QAction(this))
     , m_rotateDataAction(nullptr)
-    , m_savePlotAction(nullptr)
+    , m_savePlotAction(new QAction(this))
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
 
@@ -51,7 +52,6 @@ IntensityDataCanvas::IntensityDataCanvas()
 
     m_colorMapCanvas->setStatusLabelEnabled(true);
 
-    m_resetViewAction = new QAction(this);
     m_resetViewAction->setText("Center view");
     m_resetViewAction->setIcon(QIcon(":/images/camera-metering-center.svg"));
     m_resetViewAction->setToolTip("Reset view\n"
@@ -59,7 +59,7 @@ IntensityDataCanvas::IntensityDataCanvas()
     connect(m_resetViewAction, &QAction::triggered, this, &IntensityDataCanvas::onResetViewAction,
             Qt::UniqueConnection);
 
-    m_savePlotAction = new QAction(this);
+
     m_savePlotAction->setText("Save");
     m_savePlotAction->setIcon(QIcon(":/images/content-save-outline.svg"));
     m_savePlotAction->setToolTip("Save plot");
diff --git a/GUI/View/Canvas/MaskEditorActions.cpp b/GUI/View/Canvas/MaskEditorActions.cpp
index ef774a840eb..2e83f7b522d 100644
--- a/GUI/View/Canvas/MaskEditorActions.cpp
+++ b/GUI/View/Canvas/MaskEditorActions.cpp
@@ -27,6 +27,7 @@ MaskEditorActions::MaskEditorActions(QWidget* parent)
     , m_deleteMaskAction(new QAction("Remove mask", parent))
     , m_resetViewAction(new QAction(this))
     , m_savePlotAction(new QAction(this))
+    , m_togglePanelAction(ActionFactory::createTogglePropertiesPanelAction(this))
     , m_maskContainerModel(nullptr)
     , m_selectionModel(nullptr)
 {
@@ -60,7 +61,6 @@ MaskEditorActions::MaskEditorActions(QWidget* parent)
     m_savePlotAction->setToolTip("Save Plot");
     connect(m_savePlotAction, &QAction::triggered, this, &MaskEditorActions::savePlotRequest);
 
-    m_togglePanelAction = ActionFactory::createTogglePropertiesPanelAction(this);
     connect(m_togglePanelAction, &QAction::triggered, this,
             &MaskEditorActions::propertyPanelRequest);
 }
diff --git a/GUI/View/Canvas/SpecularDataCanvas.cpp b/GUI/View/Canvas/SpecularDataCanvas.cpp
index b2e1c454e7b..5893228f0d4 100644
--- a/GUI/View/Canvas/SpecularDataCanvas.cpp
+++ b/GUI/View/Canvas/SpecularDataCanvas.cpp
@@ -24,8 +24,8 @@
 SpecularDataCanvas::SpecularDataCanvas(QWidget* parent)
     : DataAccessWidget(parent)
     , m_plot_canvas(new SpecularPlotCanvas)
-    , m_reset_view_action(nullptr)
-    , m_save_plot_action(nullptr)
+    , m_reset_view_action(new QAction(this))
+    , m_save_plot_action(new QAction(this))
 {
     auto* vlayout = new QVBoxLayout(this);
     vlayout->setContentsMargins(0, 0, 0, 0);
@@ -36,7 +36,6 @@ SpecularDataCanvas::SpecularDataCanvas(QWidget* parent)
 
     m_plot_canvas->setStatusLabelEnabled(true);
 
-    m_reset_view_action = new QAction(this);
     m_reset_view_action->setText("Center view");
     m_reset_view_action->setIcon(QIcon(":/images/camera-metering-center.svg"));
     m_reset_view_action->setToolTip("Reset view\n"
@@ -44,7 +43,6 @@ SpecularDataCanvas::SpecularDataCanvas(QWidget* parent)
     connect(m_reset_view_action, &QAction::triggered, this, &SpecularDataCanvas::onResetViewAction,
             Qt::UniqueConnection);
 
-    m_save_plot_action = new QAction(this);
     m_save_plot_action->setText("Save");
     m_save_plot_action->setIcon(QIcon(":/images/content-save-outline.svg"));
     m_save_plot_action->setToolTip("Save plot");
diff --git a/GUI/View/Combo/ItemComboToolbar.cpp b/GUI/View/Combo/ItemComboToolbar.cpp
index ffae37632d5..c6dca7184b9 100644
--- a/GUI/View/Combo/ItemComboToolbar.cpp
+++ b/GUI/View/Combo/ItemComboToolbar.cpp
@@ -20,14 +20,12 @@
 ItemComboToolbar::ItemComboToolbar(QWidget* parent)
     : StyledToolbar(parent)
     , m_comboBox(new QComboBox)
-    , m_comboBoxAction(nullptr)
+    , m_comboBoxAction(addWidget(m_comboBox))
 {
     setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
 
     m_comboBox->setToolTip("Select type of graphical presentation.");
 
-    m_comboBoxAction = addWidget(m_comboBox);
-
     setComboConnected(true);
 }
 
diff --git a/GUI/View/Combo/ItemComboWidget.cpp b/GUI/View/Combo/ItemComboWidget.cpp
index dcdb871fdbe..2a958026f7b 100644
--- a/GUI/View/Combo/ItemComboWidget.cpp
+++ b/GUI/View/Combo/ItemComboWidget.cpp
@@ -23,10 +23,11 @@
 ItemComboWidget::ItemComboWidget()
     : m_toolbar(new ItemComboToolbar)
     , m_stackedWidget(new QStackedWidget)
+    , m_blankWidget(new QWidget)
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     m_stackedWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    m_blankWidget = new QWidget;
+
     m_stackedWidget->addWidget(m_blankWidget);
 
     auto* layout = new QVBoxLayout;
diff --git a/GUI/View/Device/BackgroundForm.cpp b/GUI/View/Device/BackgroundForm.cpp
index 768e9eed5fd..876569ad7ba 100644
--- a/GUI/View/Device/BackgroundForm.cpp
+++ b/GUI/View/Device/BackgroundForm.cpp
@@ -23,8 +23,8 @@
 BackgroundForm::BackgroundForm(QWidget* parent, InstrumentItem* instrument)
     : CollapsibleGroupBox("Environment", parent, instrument->expandEnvironment)
     , m_instrument(instrument)
+    , m_formLayout(new QFormLayout)
 {
-    m_formLayout = new QFormLayout;
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
     body()->setLayout(m_formLayout);
 
diff --git a/GUI/View/Device/FootprintForm.cpp b/GUI/View/Device/FootprintForm.cpp
index 70b9cc9e20b..0d7de774995 100644
--- a/GUI/View/Device/FootprintForm.cpp
+++ b/GUI/View/Device/FootprintForm.cpp
@@ -23,10 +23,9 @@
 
 FootprintForm::FootprintForm(QWidget* parent, SourceItem* item)
     : StaticGroupBox("Footprint correction", parent)
+    , m_formLayout(new QFormLayout(body()))
     , m_item(item)
 {
-    m_formLayout = new QFormLayout(body());
-
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
     ASSERT(item->footprintSelection().currentItem());
     auto* typeCombo = GUI::Util::createComboBoxFromProperty(
diff --git a/GUI/View/Device/SphericalAxisForm.cpp b/GUI/View/Device/SphericalAxisForm.cpp
index d868bdf848f..345bd2dd41a 100644
--- a/GUI/View/Device/SphericalAxisForm.cpp
+++ b/GUI/View/Device/SphericalAxisForm.cpp
@@ -19,14 +19,15 @@
 
 SphericalAxisForm::SphericalAxisForm(QFormLayout* form, QWidget* parent)
     : QObject(parent)
+    , m_nbinsSpinBox(new SafeSpinBox)
+    , m_minimumSpinBox(new ScientificSpinBox(parent))
+    , m_maximumSpinBox(new ScientificSpinBox(parent))
     , m_axisItem(nullptr)
 {
-    m_nbinsSpinBox = new SafeSpinBox;
     m_nbinsSpinBox->setRange(1, 65536);
     connect(m_nbinsSpinBox, &QSpinBox::valueChanged, this, &SphericalAxisForm::onNbinsValueChanged);
     form->addRow("# scan points:", m_nbinsSpinBox);
 
-    m_minimumSpinBox = new ScientificSpinBox(parent);
     m_minimumSpinBox->setMinimum(0);
     m_minimumSpinBox->setMaximum(90);
     m_minimumSpinBox->setDecimals(5);
@@ -35,7 +36,6 @@ SphericalAxisForm::SphericalAxisForm(QFormLayout* form, QWidget* parent)
             &SphericalAxisForm::onMinimumValueChanged);
     form->addRow("Initial angle [deg]:", m_minimumSpinBox);
 
-    m_maximumSpinBox = new ScientificSpinBox(parent);
     m_maximumSpinBox->setMinimum(0);
     m_maximumSpinBox->setMaximum(90);
     m_maximumSpinBox->setDecimals(5);
diff --git a/GUI/View/Fit/FitActivityPanel.cpp b/GUI/View/Fit/FitActivityPanel.cpp
index 9e2dc5a3584..1b446ced9f2 100644
--- a/GUI/View/Fit/FitActivityPanel.cpp
+++ b/GUI/View/Fit/FitActivityPanel.cpp
@@ -27,6 +27,9 @@
 
 FitActivityPanel::FitActivityPanel(QWidget* parent)
     : QWidget(parent)
+    , m_stack(new QStackedWidget(this))
+    , m_blankWidget(new QWidget(m_stack))
+    , m_fitSessionWidget(new FitSessionWidget(m_stack))
     , m_realTimeWidget(nullptr)
     , m_fitSessionManager(new FitSessionManager(this))
 {
@@ -37,17 +40,15 @@ FitActivityPanel::FitActivityPanel(QWidget* parent)
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
     layout->setSpacing(0);
-    m_stack = new QStackedWidget(this);
+
     layout->addWidget(m_stack);
 
-    m_blankWidget = new QWidget(m_stack);
     m_stack->addWidget(m_blankWidget);
 
     m_nofitLabel = new QLabel("Job has no real data linked to it for fitting.", m_stack);
     m_nofitLabel->setAlignment(Qt::AlignCenter);
     m_stack->addWidget(m_nofitLabel);
 
-    m_fitSessionWidget = new FitSessionWidget(m_stack);
     m_stack->addWidget(m_fitSessionWidget);
 
     setFixedSize(GUI::Style::FIT_ACTIVITY_PANEL_WIDTH, GUI::Style::FIT_ACTIVITY_PANEL_HEIGHT);
diff --git a/GUI/View/Fit/FitSessionWidget.cpp b/GUI/View/Fit/FitSessionWidget.cpp
index 2aea3ecfd2e..9473ce72704 100644
--- a/GUI/View/Fit/FitSessionWidget.cpp
+++ b/GUI/View/Fit/FitSessionWidget.cpp
@@ -25,6 +25,7 @@
 
 FitSessionWidget::FitSessionWidget(QWidget* parent)
     : QWidget(parent)
+    , m_tabWidget(new QTabWidget(this))
     , m_controlWidget(new RunFitControlWidget)
     , m_fitParametersWidget(new FitParameterWidget)
     , m_minimizerSettingsWidget(new MinimizerSettingsWidget)
@@ -33,7 +34,6 @@ FitSessionWidget::FitSessionWidget(QWidget* parent)
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
 
-    m_tabWidget = new QTabWidget(this);
     m_tabWidget->addTab(m_fitParametersWidget, "Fit Parameters");
     m_tabWidget->addTab(m_minimizerSettingsWidget, "Minimizer");
 
diff --git a/GUI/View/FitControl/MinimizerSettingsWidget.cpp b/GUI/View/FitControl/MinimizerSettingsWidget.cpp
index d4ad6739e11..5fb6e1d9374 100644
--- a/GUI/View/FitControl/MinimizerSettingsWidget.cpp
+++ b/GUI/View/FitControl/MinimizerSettingsWidget.cpp
@@ -26,10 +26,11 @@
 MinimizerSettingsWidget::MinimizerSettingsWidget(QWidget* parent)
     : QWidget(parent)
     , m_containerItem(nullptr)
+    , m_mainLayout(new QFormLayout(this))
 {
     setWindowTitle(QLatin1String("Minimizer Settings"));
 
-    m_mainLayout = new QFormLayout(this);
+
     m_mainLayout->setSpacing(5);
 }
 
diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp
index 2e0c46c2eac..a84ca2142a8 100644
--- a/GUI/View/Frame/Fit1DFrame.cpp
+++ b/GUI/View/Frame/Fit1DFrame.cpp
@@ -38,6 +38,8 @@ Fit1DFrame::Fit1DFrame(QWidget* parent)
     , m_statusLabel(new PlotStatusLabel(nullptr, this))
     , m_scaleEditor(new Scale1DEditor)
     , m_resetViewAction(new QAction(this))
+    , m_togglePropertiesAction(
+          ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor))
 {
     m_scaleEditor->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
 
@@ -72,9 +74,6 @@ Fit1DFrame::Fit1DFrame(QWidget* parent)
     connect(m_resetViewAction, &QAction::triggered, this, &Fit1DFrame::onResetViewAction,
             Qt::UniqueConnection);
 
-    m_togglePropertiesAction =
-        ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor);
-
     m_scaleEditor->setVisible(false);
     connect(m_scaleEditor, &DataPropertyWidget::axesRangeResetRequested, this,
             &Fit1DFrame::onResetViewAction, Qt::UniqueConnection);
diff --git a/GUI/View/Frame/Fit2DFrame.cpp b/GUI/View/Frame/Fit2DFrame.cpp
index f97e647a6cf..7831c98b140 100644
--- a/GUI/View/Frame/Fit2DFrame.cpp
+++ b/GUI/View/Frame/Fit2DFrame.cpp
@@ -38,6 +38,8 @@ Fit2DFrame::Fit2DFrame()
     , m_statusLabel(new PlotStatusLabel(nullptr, this))
     , m_scaleEditor(new Scale2DEditor)
     , m_resetViewAction(new QAction(this))
+    , m_togglePropertiesAction(
+          ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor))
 {
     auto* vlayout = new QVBoxLayout;
     vlayout->setContentsMargins(0, 0, 0, 0);
@@ -74,9 +76,6 @@ Fit2DFrame::Fit2DFrame()
     connect(m_resetViewAction, &QAction::triggered, this, &Fit2DFrame::onResetViewAction,
             Qt::UniqueConnection);
 
-    m_togglePropertiesAction =
-        ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor);
-
     m_scaleEditor->setVisible(false);
     connect(m_scaleEditor, &DataPropertyWidget::axesRangeResetRequested, this,
             &Fit2DFrame::onResetViewAction, Qt::UniqueConnection);
diff --git a/GUI/View/Frame/Plot2DFrame.cpp b/GUI/View/Frame/Plot2DFrame.cpp
index 1c57b3038f1..fbac11330ea 100644
--- a/GUI/View/Frame/Plot2DFrame.cpp
+++ b/GUI/View/Frame/Plot2DFrame.cpp
@@ -24,6 +24,8 @@ Plot2DFrame::Plot2DFrame()
     : DataAccessWidget(nullptr)
     , m_intensityCanvas(new IntensityDataCanvas)
     , m_scaleEditor(new Scale2DEditor(this))
+    , m_togglePropertiesAction(
+          ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor))
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
 
@@ -40,9 +42,6 @@ Plot2DFrame::Plot2DFrame()
 
     connect(m_intensityCanvas, &IntensityDataCanvas::customContextMenuRequested, this,
             &Plot2DFrame::onContextMenuRequest);
-
-    m_togglePropertiesAction =
-        ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor);
 }
 
 void Plot2DFrame::setJobOrDatafileItem(QObject* item)
diff --git a/GUI/View/Frame/SpecularFrame.cpp b/GUI/View/Frame/SpecularFrame.cpp
index d07d28283d0..5415acbed5f 100644
--- a/GUI/View/Frame/SpecularFrame.cpp
+++ b/GUI/View/Frame/SpecularFrame.cpp
@@ -24,6 +24,8 @@ SpecularFrame::SpecularFrame(QWidget* parent)
     : DataAccessWidget(parent)
     , m_specular_canvas(new SpecularDataCanvas)
     , m_scaleEditor(new Scale1DEditor(this))
+    , m_togglePropertiesAction(
+          ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor))
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     m_scaleEditor->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
@@ -37,9 +39,6 @@ SpecularFrame::SpecularFrame(QWidget* parent)
     connect(m_specular_canvas, &SpecularDataCanvas::customContextMenuRequested, this,
             &SpecularFrame::onContextMenuRequest);
 
-    m_togglePropertiesAction =
-        ActionFactory::createTogglePropertiesPanelAction(this, m_scaleEditor);
-
     m_scaleEditor->setVisible(false);
 }
 
diff --git a/GUI/View/Instrument/AlphaScanEditor.cpp b/GUI/View/Instrument/AlphaScanEditor.cpp
index b3b1d1721bf..40c55cec75e 100644
--- a/GUI/View/Instrument/AlphaScanEditor.cpp
+++ b/GUI/View/Instrument/AlphaScanEditor.cpp
@@ -22,6 +22,7 @@
 AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item, bool allow_distr)
     : StaticGroupBox("Grazing angles (deg)", parent)
     , m_item(item)
+    , m_plot(new DistributionPlot(this))
 {
     auto* layout = new QFormLayout(body());
 
@@ -54,7 +55,7 @@ AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item, bool al
             &AlphaScanEditor::onAxisTypeSelected);
 
     //... distribution plot
-    m_plot = new DistributionPlot(this);
+
     m_plot->setFixedHeight(170);
     m_plot->setShowMouseCoords(false);
     layout->addRow(m_plot);
diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp
index 73d666767b7..a89b1161867 100644
--- a/GUI/View/Instrument/DistributionEditor.cpp
+++ b/GUI/View/Instrument/DistributionEditor.cpp
@@ -22,13 +22,13 @@ DistributionEditor::DistributionEditor(const QString& title,
                                        GUI::ID::Distributions distributions, QWidget* parent,
                                        BeamDistributionItem* item, bool allow_distr)
     : StaticGroupBox(title, parent)
+    , m_selector(new DistributionSelector(mean_config, distributions, this, item, allow_distr))
+    , m_plot(new DistributionPlot(this))
 {
     auto* layout = new QVBoxLayout(body());
 
-    m_selector = new DistributionSelector(mean_config, distributions, this, item, allow_distr);
     layout->addWidget(m_selector);
 
-    m_plot = new DistributionPlot(this);
     m_plot->setFixedHeight(170);
     m_plot->setShowMouseCoords(false);
     layout->addWidget(m_plot);
diff --git a/GUI/View/Instrument/InstrumentListing.cpp b/GUI/View/Instrument/InstrumentListing.cpp
index 7c7dd697a48..ced2275faf4 100644
--- a/GUI/View/Instrument/InstrumentListing.cpp
+++ b/GUI/View/Instrument/InstrumentListing.cpp
@@ -23,6 +23,9 @@
 
 InstrumentListing::InstrumentListing(ProjectDocument* document)
     : m_document(document)
+    , m_model(new InstrumentListModel(this, m_document->multiNotifier()))
+    , m_separatorAction1(new QAction(this))
+    , m_separatorAction2(new QAction(this))
 {
     m_instrumentLibrary.load();
 
@@ -33,7 +36,6 @@ InstrumentListing::InstrumentListing(ProjectDocument* document)
     setMaximumWidth(200);
     setSelectionMode(QAbstractItemView::SingleSelection);
 
-    m_model = new InstrumentListModel(this, m_document->multiNotifier());
     setModel(m_model);
 
     m_newGisasAction = new QAction("New GISAS", this);
@@ -60,7 +62,6 @@ InstrumentListing::InstrumentListing(ProjectDocument* document)
     connect(m_newDepthprobeAction, &QAction::triggered, this, &InstrumentListing::onNewDepthprobe);
     addAction(m_newDepthprobeAction);
 
-    m_separatorAction1 = new QAction(this);
     m_separatorAction1->setSeparator(true);
     addAction(m_separatorAction1);
 
@@ -76,7 +77,6 @@ InstrumentListing::InstrumentListing(ProjectDocument* document)
     connect(m_copyAction, &QAction::triggered, this, &InstrumentListing::onCopy);
     addAction(m_copyAction);
 
-    m_separatorAction2 = new QAction(this);
     m_separatorAction2->setSeparator(true);
     addAction(m_separatorAction2);
 
diff --git a/GUI/View/Instrument/InstrumentView.cpp b/GUI/View/Instrument/InstrumentView.cpp
index c51a70ce534..236489e0a5b 100644
--- a/GUI/View/Instrument/InstrumentView.cpp
+++ b/GUI/View/Instrument/InstrumentView.cpp
@@ -30,7 +30,9 @@
 
 InstrumentView::InstrumentView(QWidget* parent, ProjectDocument* document)
     : QWidget(parent)
+    , m_listing(new InstrumentListing(document))
     , m_document(document)
+    , m_scrollArea(new QScrollArea)
 {
     auto* layout = new QVBoxLayout(this);
 
@@ -44,11 +46,11 @@ InstrumentView::InstrumentView(QWidget* parent, ProjectDocument* document)
     layout->addLayout(hLayout);
 
     // Left margin: instrument list
-    m_listing = new InstrumentListing(document);
+
     hLayout->addWidget(m_listing);
 
     // Large widget: current instrument
-    m_scrollArea = new QScrollArea;
+
     hLayout->addWidget(m_scrollArea);
     m_scrollArea->setWidgetResizable(true);
     m_scrollArea->setMinimumWidth(
diff --git a/GUI/View/Job/JobView.cpp b/GUI/View/Job/JobView.cpp
index 78af2152933..07c3fdc338f 100644
--- a/GUI/View/Job/JobView.cpp
+++ b/GUI/View/Job/JobView.cpp
@@ -29,6 +29,9 @@
 JobView::JobView(QProgressBar* progressBar, ProjectDocument* document)
     : m_docks(new DocksController(this))
     , m_progressAssistant(new JobProgressAssistant(progressBar, document->jobModel()))
+    , m_jobResultsPresenter(new JobResultsPresenter)
+    , m_fitActivityPanel(new FitActivityPanel)
+    , m_jobMessagePanel(new JobMessagePanel)
     , m_activityActions(this)
     , m_document(document)
 {
@@ -54,11 +57,8 @@ JobView::JobView(QProgressBar* progressBar, ProjectDocument* document)
 
     //... Subwindows
 
-    m_jobResultsPresenter = new JobResultsPresenter;
     m_jobSelector = new JobSelector(m_document->jobModel(), this);
     m_jobRealTimeWidget = new JobRealTimeWidget(m_document->jobModel(), this);
-    m_fitActivityPanel = new FitActivityPanel;
-    m_jobMessagePanel = new JobMessagePanel;
 
     m_docks->addWidget(JobViewFlags::JOB_LIST_DOCK, m_jobSelector, Qt::LeftDockWidgetArea);
     m_docks->addWidget(JobViewFlags::REAL_TIME_DOCK, m_jobRealTimeWidget, Qt::RightDockWidgetArea);
diff --git a/GUI/View/JobControl/JobListing.cpp b/GUI/View/JobControl/JobListing.cpp
index 1719d2db59e..700d217d28f 100644
--- a/GUI/View/JobControl/JobListing.cpp
+++ b/GUI/View/JobControl/JobListing.cpp
@@ -47,6 +47,9 @@ bool row_ascending(const QModelIndex& idx1, const QModelIndex& idx2)
 
 JobListing::JobListing(JobModel* jobs, QWidget* parent, Qt::WindowFlags f)
     : QWidget(parent, f)
+    , m_listView(new QListView(this))
+    , m_listViewDelegate(new JobListingDelegate(this))
+    , m_model(new JobListModel(jobs, this))
 {
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
@@ -79,15 +82,15 @@ JobListing::JobListing(JobModel* jobs, QWidget* parent, Qt::WindowFlags f)
     toolbar->addAction(m_removeAction);
     layout->addWidget(toolbar);
 
-    m_listView = new QListView(this);
+
     m_listView->setSelectionMode(QAbstractItemView::ExtendedSelection);
-    m_listViewDelegate = new JobListingDelegate(this);
+
     connect(m_listViewDelegate, &JobListingDelegate::cancelButtonClicked, this,
             &JobListing::onCancel);
     m_listView->setItemDelegate(m_listViewDelegate);
     layout->addWidget(m_listView);
 
-    m_model = new JobListModel(jobs, this);
+
     m_listView->setModel(m_model);
 
     setContextMenuPolicy(Qt::CustomContextMenu);
diff --git a/GUI/View/JobControl/JobPropertiesWidget.cpp b/GUI/View/JobControl/JobPropertiesWidget.cpp
index bd86dc1ee75..1071f2b53ca 100644
--- a/GUI/View/JobControl/JobPropertiesWidget.cpp
+++ b/GUI/View/JobControl/JobPropertiesWidget.cpp
@@ -34,6 +34,10 @@ enum ETabId { JOB_PROPERTIES, JOB_MESSAGES };
 
 JobPropertiesWidget::JobPropertiesWidget(QWidget* parent, Qt::WindowFlags f)
     : QWidget(parent, f)
+    , m_tabWidget(new QTabWidget(this))
+    , m_propertiesView(new QTreeView(this))
+    , m_propertiesModel(new JobPropertiesTableModel(this))
+    , m_commentsEditor(new QTextEdit(this))
     , m_jobItem(nullptr)
 {
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
@@ -43,19 +47,16 @@ JobPropertiesWidget::JobPropertiesWidget(QWidget* parent, Qt::WindowFlags f)
     layout->setContentsMargins(0, 0, 0, 0);
     layout->setSpacing(0);
 
-    m_tabWidget = new QTabWidget(this);
     m_tabWidget->setTabPosition(QTabWidget::South);
     layout->addWidget(m_tabWidget);
 
-    m_propertiesView = new QTreeView(this);
     m_propertiesView->setRootIsDecorated(false);
     m_propertiesView->setAlternatingRowColors(true);
     m_tabWidget->insertTab(JOB_PROPERTIES, m_propertiesView, "Job Properties");
-    m_propertiesModel = new JobPropertiesTableModel(this);
+
     m_propertiesView->setModel(m_propertiesModel);
     m_propertiesView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
 
-    m_commentsEditor = new QTextEdit(this);
     m_tabWidget->insertTab(JOB_MESSAGES, m_commentsEditor, "Messages");
 
     connect(m_commentsEditor, &QTextEdit::textChanged, this,
diff --git a/GUI/View/JobControl/JobSelector.cpp b/GUI/View/JobControl/JobSelector.cpp
index dc38b0d1595..a35b075dd7c 100644
--- a/GUI/View/JobControl/JobSelector.cpp
+++ b/GUI/View/JobControl/JobSelector.cpp
@@ -41,6 +41,8 @@ QList<int> qVariantToList(const QVariant& var)
 } // namespace
 JobSelector::JobSelector(JobModel* jobModel, QWidget* parent)
     : QWidget(parent)
+    , m_splitter(new QSplitter(Qt::Vertical, this))
+    , m_jobProperties(new JobPropertiesWidget(this))
     , m_jobModel(jobModel)
 {
     setWindowTitle(GUI::Style::JobSelectorName);
@@ -50,7 +52,7 @@ JobSelector::JobSelector(JobModel* jobModel, QWidget* parent)
     layout->setContentsMargins(0, 0, 0, 0);
     layout->setSpacing(0);
 
-    m_splitter = new QSplitter(Qt::Vertical, this);
+
     m_splitter->setChildrenCollapsible(true);
     layout->addWidget(m_splitter);
 
@@ -59,7 +61,6 @@ JobSelector::JobSelector(JobModel* jobModel, QWidget* parent)
     m_splitter->setCollapsible(0, false);
     m_splitter->setStretchFactor(0, 1);
 
-    m_jobProperties = new JobPropertiesWidget(this);
     m_splitter->addWidget(m_jobProperties);
     m_splitter->setCollapsible(1, false);
     m_splitter->setStretchFactor(1, 0);
diff --git a/GUI/View/Manager/NewProjectDialog.cpp b/GUI/View/Manager/NewProjectDialog.cpp
index ac2107de62d..5c0f9832be7 100644
--- a/GUI/View/Manager/NewProjectDialog.cpp
+++ b/GUI/View/Manager/NewProjectDialog.cpp
@@ -24,10 +24,10 @@
 NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirectory,
                                    const QString& projectName)
     : QDialog(parent)
-    , m_projectNameEdit(nullptr)
-    , m_workDirEdit(nullptr)
+    , m_projectNameEdit(new QLineEdit)
+    , m_workDirEdit(new QLineEdit)
     , m_browseButton(nullptr)
-    , m_warningLabel(nullptr)
+    , m_warningLabel(new QLabel())
     , m_cancelButton(nullptr)
     , m_createButton(nullptr)
     , m_valid_projectName(true)
@@ -38,14 +38,14 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
     setWindowTitle("Save project");
 
     auto* nameLabel = new QLabel("Project name:");
-    m_projectNameEdit = new QLineEdit;
+
     m_projectNameEdit->setText(projectName);
     connect(m_projectNameEdit, &QLineEdit::textEdited, this,
             &NewProjectDialog::checkIfProjectNameIsValid);
     nameLabel->setBuddy(m_projectNameEdit);
 
     auto* parentDirLabel = new QLabel("Save in:");
-    m_workDirEdit = new QLineEdit;
+
     m_workDirEdit->setText(QDir::toNativeSeparators(QDir::homePath()));
     connect(m_workDirEdit, &QLineEdit::textEdited, this,
             &NewProjectDialog::checkIfProjectPathIsValid);
@@ -54,8 +54,6 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
     m_browseButton = new QPushButton("Browse");
     connect(m_browseButton, &QPushButton::clicked, this, &NewProjectDialog::onBrowseDirectory);
 
-    m_warningLabel = new QLabel();
-
     m_createButton = new QPushButton("Save");
     connect(m_createButton, &QPushButton::clicked, this, &NewProjectDialog::createProjectDir);
     m_createButton->setDefault(true);
diff --git a/GUI/View/Numeric/DoubleLineEdit.cpp b/GUI/View/Numeric/DoubleLineEdit.cpp
index 7c58878bc6d..26dcea58d8a 100644
--- a/GUI/View/Numeric/DoubleLineEdit.cpp
+++ b/GUI/View/Numeric/DoubleLineEdit.cpp
@@ -16,9 +16,9 @@
 
 DoubleLineEdit::DoubleLineEdit(QWidget* parent, const DoubleProperty& d)
     : QLineEdit(parent)
+    , m_validator(new QDoubleValidator(0.0, 1e200, 1000, this))
     , m_valueProperty(d)
 {
-    m_validator = new QDoubleValidator(0.0, 1e200, 1000, this);
     m_validator->setNotation(QDoubleValidator::ScientificNotation);
     const double minimum =
         d.limits().hasLowerLimit() ? std::max(d.limits().lowerLimit(), -1e200) : -1e200;
diff --git a/GUI/View/Plotter/ColorMap.cpp b/GUI/View/Plotter/ColorMap.cpp
index 67ad99c1f3f..7a82eb3074c 100644
--- a/GUI/View/Plotter/ColorMap.cpp
+++ b/GUI/View/Plotter/ColorMap.cpp
@@ -43,22 +43,22 @@ QCPRange qcpRange(double xmin, double xmax, int nbins)
 
 ColorMap::ColorMap()
     : ScientificPlot(PLOT_TYPE::Plot2D)
+    , m_qcpMap(new QCPColorMap(m_qcp->xAxis, m_qcp->yAxis))
+    , m_colorScale(new QCPColorScale(m_qcp))
+    , m_colorBarLayout(new QCPLayoutGrid)
     , m_updateTimer(new UpdateTimer(replot_update_interval, this))
 {
     m_qcp->xAxis->setTickLabelFont(QFont(QFont().family(), GUI::Style::fontSizeSmall()));
     m_qcp->yAxis->setTickLabelFont(QFont(QFont().family(), GUI::Style::fontSizeSmall()));
     m_qcp->setAttribute(Qt::WA_NoMousePropagation, false);
 
-    m_qcpMap = new QCPColorMap(m_qcp->xAxis, m_qcp->yAxis);
 
-    m_colorScale = new QCPColorScale(m_qcp);
     m_colorScale->axis()->axisRect()->setMargins(QMargins(0, 0, 0, 0));
     m_colorScale->axis()->axisRect()->setAutoMargins(QCP::msNone);
     m_colorScale->setBarWidth(GUI::Style::SizeOfLetterM().width());
     m_colorScale->axis()->setTickLabelFont(QFont(QFont().family(), GUI::Style::fontSizeSmall()));
     m_qcpMap->setColorScale(m_colorScale);
 
-    m_colorBarLayout = new QCPLayoutGrid;
     m_colorBarLayout->addElement(0, 0, m_colorScale);
     m_colorBarLayout->setMinimumSize(colorbar_width_logz, 10);
     const auto base_size = GUI::Style::SizeOfLetterM(this).width() * 0.5;
diff --git a/GUI/View/Project/SimulationView.cpp b/GUI/View/Project/SimulationView.cpp
index fe18e66187b..1ffc70dd903 100644
--- a/GUI/View/Project/SimulationView.cpp
+++ b/GUI/View/Project/SimulationView.cpp
@@ -36,6 +36,11 @@
 SimulationView::SimulationView(QWidget* parent, ProjectDocument* document)
     : QWidget(parent)
     , m_document(document)
+    , m_instrumentCombo(new QComboBox)
+    , m_sampleCombo(new QComboBox)
+    , m_realDataCombo(new QComboBox)
+    , m_numberOfMonteCarloPoints(new QSpinBox)
+    , m_numberOfThreadsCombo(new QComboBox)
 {
     auto* layout = new QVBoxLayout;
     setLayout(layout);
@@ -47,11 +52,11 @@ SimulationView::SimulationView(QWidget* parent, ProjectDocument* document)
     auto* f1 = new QFormLayout;
     g1->body()->setLayout(f1);
     m_instrumentLabel = new QLabel("Instrument");
-    m_instrumentCombo = new QComboBox;
+
     f1->addRow(m_instrumentLabel, m_instrumentCombo);
-    m_sampleCombo = new QComboBox;
+
     f1->addRow("Sample", m_sampleCombo);
-    m_realDataCombo = new QComboBox;
+
     f1->addRow("Data", m_realDataCombo);
 
     //... Model evaluation settings
@@ -71,7 +76,7 @@ SimulationView::SimulationView(QWidget* parent, ProjectDocument* document)
     auto* l_mc2 = new QHBoxLayout;
     l2->addLayout(l_mc2);
     l_mc2->addWidget(m_monteCarloRadio);
-    m_numberOfMonteCarloPoints = new QSpinBox;
+
     l_mc2->addWidget(m_numberOfMonteCarloPoints);
     l_mc2->addStretch(1);
     l2->addSpacerItem(new QSpacerItem(10, 10));
@@ -109,7 +114,7 @@ SimulationView::SimulationView(QWidget* parent, ProjectDocument* document)
 
     // number of threads
     auto* f3 = new QFormLayout;
-    m_numberOfThreadsCombo = new QComboBox;
+
     m_numberOfThreadsCombo->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
     f3->addRow("Number of threads", m_numberOfThreadsCombo);
     l3->addLayout(f3);
diff --git a/GUI/View/Sample/CompoundForm.cpp b/GUI/View/Sample/CompoundForm.cpp
index 57e57b9af17..45051782b81 100644
--- a/GUI/View/Sample/CompoundForm.cpp
+++ b/GUI/View/Sample/CompoundForm.cpp
@@ -23,10 +23,10 @@
 CompoundForm::CompoundForm(QWidget* parent, CompoundItem* compoundItem, SampleEditorController* ec,
                            bool allowRemove)
     : CollapsibleGroupBox("Compound", parent, compoundItem->expandCompound)
+    , m_layout(new HeinzFormLayout(ec))
     , m_compositionItem(compoundItem)
     , m_ec(ec)
 {
-    m_layout = new HeinzFormLayout(ec);
     body()->setLayout(m_layout);
     m_layout->setContentsMargins(30, 6, 0, 0);
     m_layout->addVector(compoundItem->position(), false);
diff --git a/GUI/View/Sample/InterferenceForm.cpp b/GUI/View/Sample/InterferenceForm.cpp
index 83212c1e68f..1caacf72c13 100644
--- a/GUI/View/Sample/InterferenceForm.cpp
+++ b/GUI/View/Sample/InterferenceForm.cpp
@@ -24,13 +24,14 @@
 InterferenceForm::InterferenceForm(QWidget* parent, ParticleLayoutItem* layoutItem,
                                    SampleEditorController* ec)
     : CollapsibleGroupBox("Interference Function", parent, layoutItem->expandInterference)
+    , m_interferenceTypeCombo(new QComboBox(this))
     , m_layoutItem(layoutItem)
     , m_ec(ec)
 {
     m_layout = new HeinzFormLayout(m_ec);
     body()->setLayout(m_layout);
 
-    m_interferenceTypeCombo = new QComboBox(this);
+
     WheelEventEater::install(m_interferenceTypeCombo);
     const auto& d = layoutItem->interferenceSelection();
     m_interferenceTypeCombo->addItems(d.options());
diff --git a/GUI/View/Sample/LayerForm.cpp b/GUI/View/Sample/LayerForm.cpp
index a5e2861cf79..3c9ab5d2712 100644
--- a/GUI/View/Sample/LayerForm.cpp
+++ b/GUI/View/Sample/LayerForm.cpp
@@ -30,11 +30,14 @@
 
 LayerForm::LayerForm(QWidget* parent, LayerItem* layerItem, SampleEditorController* ec)
     : CollapsibleGroupBox(layerItem->layerName(), parent, layerItem->expandLayer)
+    , m_layout(new HeinzFormLayout(ec))
     , m_layer(layerItem)
+    , m_thicknessRow(m_layout->rowCount() - 1)
+    , m_roughnessRow(m_layout->rowCount() - 1)
     , m_ec(ec)
 {
     setContentsMargins(5, 5, 5, 5);
-    m_layout = new HeinzFormLayout(ec);
+
     body()->setLayout(m_layout);
 
     //... top right corner actions
@@ -93,7 +96,6 @@ LayerForm::LayerForm(QWidget* parent, LayerItem* layerItem, SampleEditorControll
 
     m_layout->addBoldRow("Material:", new MaterialInplaceForm(this, layerItem, ec));
     m_layout->addValue(m_layer->thickness());
-    m_thicknessRow = m_layout->rowCount() - 1;
 
     m_layout->addBoldRow("Number of slices:", GUI::Util::createIntSpinbox(
                                                   [this] { return m_layer->numSlices(); },
@@ -107,7 +109,6 @@ LayerForm::LayerForm(QWidget* parent, LayerItem* layerItem, SampleEditorControll
                                                   "when corresponding simulation option is set."));
 
     m_layout->addSelection(m_layer->roughnessSelection());
-    m_roughnessRow = m_layout->rowCount() - 1;
 
     // -- layouts
     for (auto* layout : layerItem->layoutItems())
diff --git a/GUI/View/Sample/LayerForm.h b/GUI/View/Sample/LayerForm.h
index a4483c4d28a..ab7153644d8 100644
--- a/GUI/View/Sample/LayerForm.h
+++ b/GUI/View/Sample/LayerForm.h
@@ -45,8 +45,8 @@ private:
     LayerItem* m_layer;
     QAction* m_duplicateAction;
     QAction* m_removeAction;
-    int m_roughnessRow = -1;
-    int m_thicknessRow = -1;
+    int m_thicknessRow;
+    int m_roughnessRow;
     SampleEditorController* m_ec;
     QList<QWidget*> m_structureEditingWidgets;
     WidgetMoverButton* m_moveButton;
diff --git a/GUI/View/Sample/MaterialInplaceForm.cpp b/GUI/View/Sample/MaterialInplaceForm.cpp
index a5c92802fc6..ea54d6dc751 100644
--- a/GUI/View/Sample/MaterialInplaceForm.cpp
+++ b/GUI/View/Sample/MaterialInplaceForm.cpp
@@ -36,8 +36,8 @@ MaterialInplaceForm::MaterialInplaceForm(QWidget* parent, ItemWithMaterial* item
     : QWidget(parent)
     , m_item(item)
     , m_ec(ec)
+    , m_layout(new QGridLayout(this))
 {
-    m_layout = new QGridLayout(this);
     m_layout->setContentsMargins(0, 0, 0, 0);
     createWidgets();
 
diff --git a/GUI/View/Sample/MesocrystalForm.cpp b/GUI/View/Sample/MesocrystalForm.cpp
index 8d010166850..5d504f6cca6 100644
--- a/GUI/View/Sample/MesocrystalForm.cpp
+++ b/GUI/View/Sample/MesocrystalForm.cpp
@@ -24,10 +24,13 @@
 MesocrystalForm::MesocrystalForm(QWidget* parent, MesocrystalItem* mesocrystalItem,
                                  SampleEditorController* ec, bool allowRemove)
     : CollapsibleGroupBox("Mesocrystal", parent, mesocrystalItem->expandMesocrystal)
+    , m_layout(new HeinzFormLayout(ec))
     , m_item(mesocrystalItem)
     , m_ec(ec)
+    , m_basisCombo(createBasisCombo(this, mesocrystalItem->basisItem()))
+    , m_rowOfBasisTypeCombo(m_layout->rowCount() - 1)
 {
-    m_layout = new HeinzFormLayout(ec);
+
     body()->setLayout(m_layout);
     m_layout->setContentsMargins(30, 6, 0, 0);
     m_layout->addVector(mesocrystalItem->position(), false);
@@ -39,11 +42,11 @@ MesocrystalForm::MesocrystalForm(QWidget* parent, MesocrystalItem* mesocrystalIt
 
     m_layout->addSelection(mesocrystalItem->outerShapeSelection());
 
-    m_basisCombo = createBasisCombo(this, mesocrystalItem->basisItem());
+
     connect(m_basisCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
             &MesocrystalForm::onBasisComboChanged);
     m_layout->addBoldRow("Basis type", m_basisCombo);
-    m_rowOfBasisTypeCombo = m_layout->rowCount() - 1;
+
     createBasisWidgets();
 
     //... top right corner actions
diff --git a/GUI/View/Sample/ParticleLayoutForm.cpp b/GUI/View/Sample/ParticleLayoutForm.cpp
index 773531e2650..0aad34eeda8 100644
--- a/GUI/View/Sample/ParticleLayoutForm.cpp
+++ b/GUI/View/Sample/ParticleLayoutForm.cpp
@@ -31,10 +31,10 @@
 ParticleLayoutForm::ParticleLayoutForm(LayerForm* form, ParticleLayoutItem* pLayoutItem,
                                        SampleEditorController* ec)
     : CollapsibleGroupBox("TODO", form, pLayoutItem->expandParticleLayout)
+    , m_layout(new HeinzFormLayout(ec))
     , m_layoutItem(pLayoutItem)
     , m_ec(ec)
 {
-    m_layout = new HeinzFormLayout(ec);
     body()->setLayout(m_layout);
 
     m_layout->addValue(m_layoutItem->ownDensity());
diff --git a/GUI/View/Sample/SampleForm.cpp b/GUI/View/Sample/SampleForm.cpp
index dbfa8a5193a..89233c6278c 100644
--- a/GUI/View/Sample/SampleForm.cpp
+++ b/GUI/View/Sample/SampleForm.cpp
@@ -57,12 +57,12 @@ public:
 
 
 SampleForm::SampleForm(SampleItem* sampleItem, SampleEditorController* ec)
-    : m_sampleItem(sampleItem)
+    : m_layout(new QVBoxLayout(this))
+    , m_sampleItem(sampleItem)
     , m_ec(ec)
 {
     setAttribute(Qt::WA_StyledBackground, true);
 
-    m_layout = new QVBoxLayout(this);
     m_layout->setAlignment(Qt::AlignTop);
 
     auto* summary = new CollapsibleGroupBox("Summary and layer-independent parameters", this,
diff --git a/GUI/View/Sample/SampleListing.cpp b/GUI/View/Sample/SampleListing.cpp
index 6c80d875919..ffe9943d858 100644
--- a/GUI/View/Sample/SampleListing.cpp
+++ b/GUI/View/Sample/SampleListing.cpp
@@ -64,11 +64,14 @@ protected:
 
 SampleListing::SampleListing(QWidget* parent, ProjectDocument* document)
     : QListView(parent)
+    , m_model(new SampleListModel(this, document->sampleModel()))
     , m_document(document)
+    , m_newSampleAction(new QAction(this))
+    , m_importSampleAction(new QAction(this))
+    , m_chooseFromLibraryAction(new QAction(this))
 {
     setMaximumWidth(200);
 
-    m_model = new SampleListModel(this, document->sampleModel());
 
     setContextMenuPolicy(Qt::CustomContextMenu);
     setModel(m_model);
@@ -83,14 +86,14 @@ SampleListing::SampleListing(QWidget* parent, ProjectDocument* document)
 
     connect(this, &QWidget::customContextMenuRequested, this, &SampleListing::showContextMenu);
 
-    m_newSampleAction = new QAction(this);
+
     m_newSampleAction->setText("Create new sample");
     m_newSampleAction->setIcon(QIcon(":/images/shape-square-plus.svg"));
     m_newSampleAction->setIconText("New");
     m_newSampleAction->setToolTip("Create new sample");
     connect(m_newSampleAction, &QAction::triggered, this, &SampleListing::createNewSample);
 
-    m_importSampleAction = new QAction(this);
+
     m_importSampleAction->setText("Import sample from python script (experimental)");
     m_importSampleAction->setIcon(QIcon(":/images/import.svg"));
     m_importSampleAction->setIconText("Import");
@@ -105,7 +108,7 @@ SampleListing::SampleListing(QWidget* parent, ProjectDocument* document)
     m_importSampleAction->setVisible(false);
 #endif
 
-    m_chooseFromLibraryAction = new QAction(this);
+
     m_chooseFromLibraryAction->setText("Choose from sample examples");
     m_chooseFromLibraryAction->setIcon(QIcon(":/images/library.svg"));
     m_chooseFromLibraryAction->setIconText("Examples");
diff --git a/GUI/View/Sample/SampleView.cpp b/GUI/View/Sample/SampleView.cpp
index cf0103a6dbc..0cc769fc89b 100644
--- a/GUI/View/Sample/SampleView.cpp
+++ b/GUI/View/Sample/SampleView.cpp
@@ -38,6 +38,8 @@
 SampleView::SampleView(QWidget* parent, ProjectDocument* document)
     : QWidget(parent)
     , m_document(document)
+    , m_realspacePanel(new RealspacePanel(this))
+    , m_listing(new SampleListing(this, m_document))
 {
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
@@ -53,7 +55,6 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document)
 
     //... Left margin: sample listing
 
-    m_listing = new SampleListing(this, m_document);
     hLayout->addWidget(m_listing);
     m_listing->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
 
@@ -72,7 +73,6 @@ SampleView::SampleView(QWidget* parent, ProjectDocument* document)
     hSplitter->setOrientation(Qt::Horizontal);
     vSplitter->addWidget(hSplitter);
 
-    m_realspacePanel = new RealspacePanel(this);
     hSplitter->addWidget(m_realspacePanel);
 
     auto* scriptPanel = new ScriptPanel(this);
diff --git a/GUI/View/Sample/SampleView.h b/GUI/View/Sample/SampleView.h
index 247a7cb348b..25f24689190 100644
--- a/GUI/View/Sample/SampleView.h
+++ b/GUI/View/Sample/SampleView.h
@@ -42,9 +42,9 @@ private:
     void applySplitterPos();
     void saveSplitterPos();
 
-    ProjectDocument* m_document = nullptr;
-    RealspacePanel* m_realspacePanel = nullptr;
-    SampleListing* m_listing = nullptr;
+    ProjectDocument* m_document;
+    RealspacePanel* m_realspacePanel;
+    SampleListing* m_listing;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_SAMPLE_SAMPLEVIEW_H
diff --git a/GUI/View/Tuning/ParameterBackupWidget.cpp b/GUI/View/Tuning/ParameterBackupWidget.cpp
index 88e44b65a83..7d022dd57aa 100644
--- a/GUI/View/Tuning/ParameterBackupWidget.cpp
+++ b/GUI/View/Tuning/ParameterBackupWidget.cpp
@@ -62,12 +62,13 @@ public:
 
 ParameterBackupWidget::ParameterBackupWidget(QWidget* parent)
     : QWidget(parent)
+    , m_combo(new QComboBox)
 {
     auto* mainLayout = new QVBoxLayout(this);
 
     auto* h1 = new QHBoxLayout;
     h1->setAlignment(Qt::AlignLeft);
-    m_combo = new QComboBox;
+
     m_combo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
     h1->addWidget(m_combo);
 
diff --git a/GUI/View/Widget/GroupBoxes.cpp b/GUI/View/Widget/GroupBoxes.cpp
index 6ea9525e312..564bdf1b2c9 100644
--- a/GUI/View/Widget/GroupBoxes.cpp
+++ b/GUI/View/Widget/GroupBoxes.cpp
@@ -24,6 +24,7 @@
 
 StaticGroupBox::StaticGroupBox(const QString& title, QWidget* parent)
     : QssWidget(parent)
+    , m_body(new QWidget)
 {
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
@@ -35,7 +36,6 @@ StaticGroupBox::StaticGroupBox(const QString& title, QWidget* parent)
     label->setText(title);
     label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
 
-    m_body = new QWidget;
     layout->addWidget(m_body);
 }
 
@@ -45,6 +45,10 @@ StaticGroupBox::StaticGroupBox(const QString& title, QWidget* parent)
 
 CollapsibleGroupBox::CollapsibleGroupBox(const QString& title, QWidget* parent, bool& expanded)
     : QssWidget(parent)
+    , m_titleWidget(new QWidget)
+    , m_titleLayout(new QHBoxLayout(m_titleWidget))
+    , m_toggleButton(new QToolButton)
+    , m_body(new QWidget(this))
 {
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
@@ -52,17 +56,14 @@ CollapsibleGroupBox::CollapsibleGroupBox(const QString& title, QWidget* parent,
 
     //... Header widget
 
-    m_titleWidget = new QWidget;
     layout->setMenuBar(m_titleWidget);
     m_titleWidget->setObjectName("GroupBoxTitleWidget");
     m_titleWidget->setAttribute(Qt::WA_StyledBackground, true);
 
-    m_titleLayout = new QHBoxLayout(m_titleWidget);
     m_titleLayout->setContentsMargins(1, 1, 1, 1);
     m_titleLayout->setSpacing(3);
     m_titleLayout->setAlignment(Qt::AlignVCenter);
 
-    m_toggleButton = new QToolButton;
     m_titleLayout->addWidget(m_toggleButton);
     m_toggleButton->setObjectName("GroupBoxToggler");
     m_toggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@@ -74,7 +75,6 @@ CollapsibleGroupBox::CollapsibleGroupBox(const QString& title, QWidget* parent,
 
     //... Body
 
-    m_body = new QWidget(this);
     layout->addWidget(m_body);
     m_body->setVisible(expanded);
     m_toggleButton->setArrowType(expanded ? Qt::ArrowType::DownArrow : Qt::ArrowType::RightArrow);
diff --git a/Img3D/Plot/AxesPlotter.cpp b/Img3D/Plot/AxesPlotter.cpp
index d2aba9e5c95..1d861d7f778 100644
--- a/Img3D/Plot/AxesPlotter.cpp
+++ b/Img3D/Plot/AxesPlotter.cpp
@@ -24,6 +24,7 @@ const float cz = 100; // multiplication scale for controlling how long the axes
 namespace Img3D {
 
 AxesPlotter::AxesPlotter()
+    : m_vertexCount3DAxes(30)
 {
     initializeOpenGLFunctions();
 
@@ -62,8 +63,6 @@ AxesPlotter::AxesPlotter()
         cz * -0.05f, cz * 0.95f,  0.0f,        0.0f,       1.0f,
     };
 
-    m_vertexCount3DAxes = 30;
-
     m_glAxesPlotter.create();
     m_glAxesPlotter.bind();
     m_glAxesPlotter.allocate(vertices3DAxes, int(sizeof(vertices3DAxes)));
-- 
GitLab


From e63841d9db2a2f8cd55e91785c3bba62f5b5af4a Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 09:43:07 +0100
Subject: [PATCH 24/33] tidy/llvm-namespace-comment

---
 .clang-tidy                                     | 10 +++++++---
 Device/IO/ReadWriteTiff.cpp                     |  2 +-
 GUI/Model/Device/BackgroundItems.cpp            |  2 +-
 GUI/View/Fit/FitSessionController.cpp           |  2 +-
 GUI/View/Info/DetailedMessageBox.cpp            |  2 +-
 GUI/View/JobControl/JobPropertiesTableModel.cpp |  4 ++--
 GUI/View/JobControl/JobPropertiesWidget.cpp     |  2 +-
 GUI/View/Manager/AutosaveController.cpp         |  2 +-
 GUI/View/Manager/ProjectLoadProblemDialog.cpp   |  2 +-
 GUI/View/Sample/ScriptPanel.cpp                 |  2 +-
 GUI/View/Shape/PolygonDisplay.cpp               |  2 +-
 Tests/Functional/Mumufit/PlanCases.cpp          |  2 +-
 12 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index a5e70ba1d58..89adc605ed4 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,19 +16,22 @@ Checks: '*,
 
 
 -*,
--*avoid-c-arrays,
--*narrowing-conversions,
+-clang-analyzer-cplusplus.NewDeleteLeaks,
+-cppcoreguidelines-avoid-non-const-global-variables,
+-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
+-hicpp-no-array-decay,
+-llvm-include-order,
 
 -bugprone-unused-return-value,
 -cppcoreguidelines-explicit-virtual-functions,
 -cppcoreguidelines-prefer-member-initializer,
 -hicpp-move-const-arg,
+-llvm-namespace-comment,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
 -modernize-avoid-bind,
 -modernize-make-unique,
 -modernize-pass-by-value,
--modernize-raw-string-literal,
 -modernize-use-default-member-init,
 -modernize-use-using,
 -performance-for-range-copy,
@@ -41,6 +44,7 @@ Checks: '*,
 -readability-inconsistent-declaration-parameter-name,
 -readability-non-const-parameter,
 -readability-qualified-auto,
+-readability-redundant-access-specifiers,
 -readability-simplify-boolean-expr,
 
 '
diff --git a/Device/IO/ReadWriteTiff.cpp b/Device/IO/ReadWriteTiff.cpp
index e05797ca495..cb82925fb76 100644
--- a/Device/IO/ReadWriteTiff.cpp
+++ b/Device/IO/ReadWriteTiff.cpp
@@ -30,7 +30,7 @@
 namespace {
 const std::string ref_to_doc =
     "\n\nThe TIFF format requirements can be found in the web documentation.";
-}
+} // namespace
 
 Datafield* Util::RW::readTiff(std::istream& input_stream)
 {
diff --git a/GUI/Model/Device/BackgroundItems.cpp b/GUI/Model/Device/BackgroundItems.cpp
index 55995e63f8a..fe32a8a9b3e 100644
--- a/GUI/Model/Device/BackgroundItems.cpp
+++ b/GUI/Model/Device/BackgroundItems.cpp
@@ -22,7 +22,7 @@ namespace Tag {
 
 const QString BackgroundValue("BackgroundValue");
 
-}
+} // namespace Tag
 } // namespace
 
 ConstantBackgroundItem::ConstantBackgroundItem()
diff --git a/GUI/View/Fit/FitSessionController.cpp b/GUI/View/Fit/FitSessionController.cpp
index 4ec9bd17e39..b1b977bef24 100644
--- a/GUI/View/Fit/FitSessionController.cpp
+++ b/GUI/View/Fit/FitSessionController.cpp
@@ -26,7 +26,7 @@
 namespace {
 
 const bool use_fit_objective = true;
-}
+} // namespace
 
 FitSessionController::FitSessionController(QObject* parent)
     : QObject(parent)
diff --git a/GUI/View/Info/DetailedMessageBox.cpp b/GUI/View/Info/DetailedMessageBox.cpp
index 314921bd0f7..7123fe0070b 100644
--- a/GUI/View/Info/DetailedMessageBox.cpp
+++ b/GUI/View/Info/DetailedMessageBox.cpp
@@ -21,7 +21,7 @@
 namespace {
 
 const QSize default_dialog_size(512, 300);
-}
+} // namespace
 
 DetailedMessageBox::DetailedMessageBox(QWidget* parent, const QString& title, const QString& text,
                                        const QString& details)
diff --git a/GUI/View/JobControl/JobPropertiesTableModel.cpp b/GUI/View/JobControl/JobPropertiesTableModel.cpp
index 1acad412208..99bfce7a308 100644
--- a/GUI/View/JobControl/JobPropertiesTableModel.cpp
+++ b/GUI/View/JobControl/JobPropertiesTableModel.cpp
@@ -21,13 +21,13 @@ namespace {
 
 namespace Column {
 enum Columns { Name, Value };
-}
+} // namespace Column
 const QString ColumnNames[] = {"Name", "Value"};
 const int NumColumns = (int)std::size(ColumnNames);
 
 namespace Row {
 enum Rows { Name, Sample, Instrument, Status, Begin, End, Duration };
-}
+} // namespace Row
 const QString RowNames[] = {"Name", "Sample", "Instrument", "Status", "Begin", "End", "Duration"};
 const int NumRows = (int)std::size(RowNames);
 
diff --git a/GUI/View/JobControl/JobPropertiesWidget.cpp b/GUI/View/JobControl/JobPropertiesWidget.cpp
index 1071f2b53ca..d329927bc93 100644
--- a/GUI/View/JobControl/JobPropertiesWidget.cpp
+++ b/GUI/View/JobControl/JobPropertiesWidget.cpp
@@ -22,7 +22,7 @@
 namespace {
 
 enum ETabId { JOB_PROPERTIES, JOB_MESSAGES };
-}
+} // namespace
 
 //==================================================================================================
 // JobPropertiesWidget
diff --git a/GUI/View/Manager/AutosaveController.cpp b/GUI/View/Manager/AutosaveController.cpp
index 2c7e32eb00e..3323e3d9315 100644
--- a/GUI/View/Manager/AutosaveController.cpp
+++ b/GUI/View/Manager/AutosaveController.cpp
@@ -21,7 +21,7 @@
 namespace {
 
 const int update_every = 20000; // in msec
-}
+} // namespace
 
 AutosaveController::AutosaveController(QObject* parent)
     : QObject(parent)
diff --git a/GUI/View/Manager/ProjectLoadProblemDialog.cpp b/GUI/View/Manager/ProjectLoadProblemDialog.cpp
index c7ef8407856..7cbfbfa49cb 100644
--- a/GUI/View/Manager/ProjectLoadProblemDialog.cpp
+++ b/GUI/View/Manager/ProjectLoadProblemDialog.cpp
@@ -23,7 +23,7 @@
 namespace {
 
 const int top_panel_height = 80;
-}
+} // namespace
 
 ProjectLoadProblemDialog::ProjectLoadProblemDialog(QWidget* parent, const QStringList& details,
                                                    QString documentVersion)
diff --git a/GUI/View/Sample/ScriptPanel.cpp b/GUI/View/Sample/ScriptPanel.cpp
index 3a9715915cf..d61d7cbb5e4 100644
--- a/GUI/View/Sample/ScriptPanel.cpp
+++ b/GUI/View/Sample/ScriptPanel.cpp
@@ -29,7 +29,7 @@ namespace {
 
 const int accumulateUpdatesDuringMsec = 20.;
 
-}
+} // namespace
 
 ScriptPanel::ScriptPanel(QWidget* parent)
     : QWidget(parent)
diff --git a/GUI/View/Shape/PolygonDisplay.cpp b/GUI/View/Shape/PolygonDisplay.cpp
index 0173824ff04..768da6fafbc 100644
--- a/GUI/View/Shape/PolygonDisplay.cpp
+++ b/GUI/View/Shape/PolygonDisplay.cpp
@@ -22,7 +22,7 @@
 namespace {
 
 const double bbox_margins = 5; // additional margins around points to form bounding box
-}
+} // namespace
 
 PolygonDisplay::PolygonDisplay(PolygonItem* item)
     : IShapeDisplay(item)
diff --git a/Tests/Functional/Mumufit/PlanCases.cpp b/Tests/Functional/Mumufit/PlanCases.cpp
index 743f7f0ab59..6b982c5c331 100644
--- a/Tests/Functional/Mumufit/PlanCases.cpp
+++ b/Tests/Functional/Mumufit/PlanCases.cpp
@@ -18,7 +18,7 @@
 namespace {
 
 const double loose_tolerance = 0.1;
-}
+} // namespace
 
 using namespace mumufit;
 
-- 
GitLab


From d1e3d07dea877782c8a8fe40b66c9951ad080d78 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:01:56 +0100
Subject: [PATCH 25/33] some file-wide variables -> const

---
 .clang-tidy                                            | 5 +----
 App/AppOptions.cpp                                     | 8 +++-----
 GUI/Model/Data/Data2DItem.cpp                          | 4 ++--
 GUI/Model/Job/MinimizerItem.cpp                        | 5 ++++-
 Sample/Correlations/IDistribution2DSampler.cpp         | 4 ++--
 Sample/StandardSamples/PlainMultiLayerBySLDBuilder.cpp | 6 +++---
 Tests/SimFactory/MakeSimulations.cpp                   | 4 ++--
 7 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 89adc605ed4..a2b2450bf81 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -17,10 +17,7 @@ Checks: '*,
 
 -*,
 -clang-analyzer-cplusplus.NewDeleteLeaks,
--cppcoreguidelines-avoid-non-const-global-variables,
--cppcoreguidelines-pro-bounds-array-to-pointer-decay,
--hicpp-no-array-decay,
--llvm-include-order,
+cppcoreguidelines-avoid-non-const-global-variables,
 
 -bugprone-unused-return-value,
 -cppcoreguidelines-explicit-virtual-functions,
diff --git a/App/AppOptions.cpp b/App/AppOptions.cpp
index 7f30532cf94..530a436b182 100644
--- a/App/AppOptions.cpp
+++ b/App/AppOptions.cpp
@@ -24,8 +24,6 @@
 
 namespace {
 
-const char* geometry = "geometry";
-
 //! Converts string "1600x1000" to QSize(1600, 1000)
 QSize windowSize(const QString& size_string)
 {
@@ -60,7 +58,7 @@ ApplicationOptions::ApplicationOptions(int argc, char** argv)
     m_options.add_options()("help,h", "print help message and exit");
     m_options.add_options()("version,v", "print version and exit");
     m_options.add_options()("with-debug", "run application with debug printout");
-    m_options.add_options()(geometry, bpo::value<std::string>(),
+    m_options.add_options()("geometry", bpo::value<std::string>(),
                             "Main window geometry, e.g. 1600x1000");
     m_options.add_options()("project-file", bpo::value<std::string>(), "project file");
     m_positional_options.add("project-file", -1);
@@ -117,7 +115,7 @@ void ApplicationOptions::processOptions()
         exit(0);
     }
 
-    else if (m_variables_map.count(geometry)) {
+    else if (m_variables_map.count("geometry")) {
         if (!isValid(mainWindowSize()))
             exitWithGuiMessage("Wrong window size, try --geometry=1600x900\n");
     }
@@ -125,7 +123,7 @@ void ApplicationOptions::processOptions()
 
 QSize ApplicationOptions::mainWindowSize() const
 {
-    QString size_str = QString::fromStdString(m_variables_map[geometry].as<std::string>());
+    QString size_str = QString::fromStdString(m_variables_map["geometry"].as<std::string>());
     return windowSize(size_str);
 }
 
diff --git a/GUI/Model/Data/Data2DItem.cpp b/GUI/Model/Data/Data2DItem.cpp
index a0e7c115587..6d5299315f0 100644
--- a/GUI/Model/Data/Data2DItem.cpp
+++ b/GUI/Model/Data/Data2DItem.cpp
@@ -37,7 +37,7 @@ const QString ZAxis("ZAxis");
 
 } // namespace Tag
 
-QCPColorGradient infernoGradient = GUI::QCP_Util::colorGradientInferno();
+const QCPColorGradient infernoGradient = GUI::QCP_Util::colorGradientInferno();
 
 // gradient map for colormaps
 const QMap<QString, QCPColorGradient::GradientPreset> gradient_map = {
@@ -56,7 +56,7 @@ const QMap<QString, QCPColorGradient::GradientPreset> gradient_map = {
 
 const QMap<QString, QCPColorGradient> custom_gradient_map = {{"Inferno", infernoGradient}};
 
-QString startGradient = "Inferno";
+const QString startGradient = "Inferno";
 
 } // namespace
 
diff --git a/GUI/Model/Job/MinimizerItem.cpp b/GUI/Model/Job/MinimizerItem.cpp
index 18434e94760..52de1456ec6 100644
--- a/GUI/Model/Job/MinimizerItem.cpp
+++ b/GUI/Model/Job/MinimizerItem.cpp
@@ -72,7 +72,8 @@ QString minimizerTypeToName(MinimizerType type)
 
 namespace {
 
-QMap<QString /*algorithm*/, QString /*minimizer*/> algorithm_minimizer_map;
+QMap<QString, QString> algorithm_minimizer_map;
+
 QString add_algorithm_from_minimizer_to_list_and_map(MinimizerType minimizer_type,
                                                      QStringList& common_algorithms_list,
                                                      QStringList& common_algorithms_descriptions)
@@ -90,6 +91,7 @@ QString add_algorithm_from_minimizer_to_list_and_map(MinimizerType minimizer_typ
     ASSERT(algorithms.size() > 0);
     return algorithms.first();
 }
+
 void create_algorithm_list_and_map(QString& default_common_algorithm, QStringList& algorithms_list,
                                    QStringList& algorithms_descriptions)
 {
@@ -136,6 +138,7 @@ void create_algorithm_list_and_map(QString& default_common_algorithm, QStringLis
 
 } // namespace
 
+
 MinimizerContainerItem::MinimizerContainerItem()
     : m_MinuitMinimizer(std::make_unique<MinuitMinimizerItem>())
     , m_GSLMultiMinimizer(std::make_unique<GSLMultiMinimizerItem>())
diff --git a/Sample/Correlations/IDistribution2DSampler.cpp b/Sample/Correlations/IDistribution2DSampler.cpp
index a9e47bc4f51..4bd499365e3 100644
--- a/Sample/Correlations/IDistribution2DSampler.cpp
+++ b/Sample/Correlations/IDistribution2DSampler.cpp
@@ -20,8 +20,8 @@ using std::numbers::pi;
 
 namespace {
 
-double sigma_scale = 3.0;
-size_t n_boxes = 256; // number of boxes for Ziggurat sampling
+const double sigma_scale = 3.0;
+const size_t n_boxes = 256; // number of boxes for Ziggurat sampling
 
 struct ZigguratBox {
     ZigguratBox(double x_min, double x_max, double y_max, double y_lower)
diff --git a/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.cpp b/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
index 161539761bc..f39e69c963f 100644
--- a/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
+++ b/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.cpp
@@ -24,9 +24,9 @@ struct MaterialData {
     double sld_imag; //!< imaginary part of sld in AA^{-2}
 };
 
-MaterialData m_si{2.0704e-06, 2.3726e-11};
-MaterialData m_ti{-1.9493e-06, 9.6013e-10};
-MaterialData m_ni{9.4245e-06, 1.1423e-09};
+const MaterialData m_si{2.0704e-06, 2.3726e-11};
+const MaterialData m_ti{-1.9493e-06, 9.6013e-10};
+const MaterialData m_ni{9.4245e-06, 1.1423e-09};
 
 } // namespace
 
diff --git a/Tests/SimFactory/MakeSimulations.cpp b/Tests/SimFactory/MakeSimulations.cpp
index aaf5ed0dbe5..a11cc5bd936 100644
--- a/Tests/SimFactory/MakeSimulations.cpp
+++ b/Tests/SimFactory/MakeSimulations.cpp
@@ -59,8 +59,8 @@ const std::map<std::string, std::pair<R3, R3>> YPolarizationCases = {
     {"MM", {-yplus, -yplus}},
 };
 
-Beam stdBeam(Beam(1, 1 * angstrom, 0.2 * deg));
-Beam powerBeam(Beam(1e7, 1 * angstrom, 0.2 * deg));
+const Beam stdBeam(1, 1 * angstrom, 0.2 * deg);
+const Beam powerBeam(1e7, 1 * angstrom, 0.2 * deg);
 
 } // namespace
 
-- 
GitLab


From 59bc1e147721add6e9fea2901bbc2520fea5e7de Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:03:07 +0100
Subject: [PATCH 26/33] + TODO note

---
 GUI/Model/Job/MinimizerItem.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/GUI/Model/Job/MinimizerItem.cpp b/GUI/Model/Job/MinimizerItem.cpp
index 52de1456ec6..837adf4e9f3 100644
--- a/GUI/Model/Job/MinimizerItem.cpp
+++ b/GUI/Model/Job/MinimizerItem.cpp
@@ -72,7 +72,7 @@ QString minimizerTypeToName(MinimizerType type)
 
 namespace {
 
-QMap<QString, QString> algorithm_minimizer_map;
+QMap<QString, QString> algorithm_minimizer_map; // TODO make this a class member
 
 QString add_algorithm_from_minimizer_to_list_and_map(MinimizerType minimizer_type,
                                                      QStringList& common_algorithms_list,
-- 
GitLab


From 2bf7f0a3d2830fa8360ac2819c2d10f9339a22e0 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:31:04 +0100
Subject: [PATCH 27/33] tidy/modernize-loop-convert

---
 .clang-tidy                              | 13 +++++++++++--
 Base/Util/StringUtil.cpp                 |  4 ++--
 Device/Mask/Polygon.cpp                  |  6 +++---
 Device/Resolution/Convolve.cpp           |  6 +++---
 GUI/Model/Data/MaskResultsPresenter.cpp  | 12 +++++++-----
 GUI/Model/Detector/DetectorItem.cpp      | 12 +++++++-----
 GUI/Model/Job/JobItem.cpp                |  4 ++--
 GUI/Model/Mask/MaskContainerItem.cpp     |  6 +++---
 GUI/View/Instrument/DistributionPlot.cpp |  4 ++--
 GUI/View/PlotScale/SavePlotAssistant.cpp | 10 +++++-----
 Resample/Particle/ReCompound.cpp         | 20 ++++++++++----------
 Sample/Particle/Compound.cpp             |  8 ++++----
 Sim/Fitting/SimDataPair.cpp              | 12 ++++++------
 Sim/Scan/AlphaScan.cpp                   | 10 +++++-----
 Sim/Scan/QzScan.cpp                      | 13 ++++++-------
 Tests/Unit/Sample/MultiLayerTest.cpp     |  3 +--
 16 files changed, 77 insertions(+), 66 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index a2b2450bf81..666b0f684a9 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -16,8 +16,17 @@ Checks: '*,
 
 
 -*,
--clang-analyzer-cplusplus.NewDeleteLeaks,
-cppcoreguidelines-avoid-non-const-global-variables,
+-altera-id-dependent-backward-branch,
+-bugprone-copy-constructor-init,
+-bugprone-exception-escape,
+-bugprone-misplaced-widening-cast,
+-clang-analyzer-core.CallAndMessage,
+-clang-analyzer-optin.cplusplus.VirtualCall,
+-cppcoreguidelines-pro-type-const-cast,
+-cppcoreguidelines-pro-type-static-cast-downcast,
+-google-runtime-references,
+-misc-non-private-member-variables-in-classes,
+modernize-loop-convert,
 
 -bugprone-unused-return-value,
 -cppcoreguidelines-explicit-virtual-functions,
diff --git a/Base/Util/StringUtil.cpp b/Base/Util/StringUtil.cpp
index 3870da1b1bc..58c718602c7 100644
--- a/Base/Util/StringUtil.cpp
+++ b/Base/Util/StringUtil.cpp
@@ -31,8 +31,8 @@ std::vector<std::string> Base::String::split(const std::string& text, const std:
 void Base::String::replaceItemsFromString(std::string& text, const std::vector<std::string>& items,
                                           const std::string& replacement)
 {
-    for (size_t i = 0; i < items.size(); ++i)
-        boost::replace_all(text, items[i], replacement);
+    for (const auto& item : items)
+        boost::replace_all(text, item, replacement);
 }
 
 std::string Base::String::join(const std::vector<std::string>& joinable, const std::string& joint)
diff --git a/Device/Mask/Polygon.cpp b/Device/Mask/Polygon.cpp
index f81d2b84237..7981e053ab5 100644
--- a/Device/Mask/Polygon.cpp
+++ b/Device/Mask/Polygon.cpp
@@ -52,10 +52,10 @@ void PolygonPrivate::get_points(std::vector<double>& xpos, std::vector<double>&
 {
     xpos.clear();
     ypos.clear();
-    for (auto it = polygon.outer().begin(); it != polygon.outer().end(); ++it) {
+    for (auto& it : polygon.outer()) {
         // for vectors of x and y, extract the x/y from the point
-        xpos.push_back(boost::geometry::get<0>(*it));
-        ypos.push_back(boost::geometry::get<1>(*it));
+        xpos.push_back(boost::geometry::get<0>(it));
+        ypos.push_back(boost::geometry::get<1>(it));
     }
 }
 
diff --git a/Device/Resolution/Convolve.cpp b/Device/Resolution/Convolve.cpp
index 0ce849ef877..4ceed5e6c21 100644
--- a/Device/Resolution/Convolve.cpp
+++ b/Device/Resolution/Convolve.cpp
@@ -24,9 +24,9 @@ bool is_optimal(int n)
     if (n == 1)
         return false;
     size_t ntest = n;
-    for (size_t i = 0; i < favored_factors.size(); i++)
-        while ((ntest % favored_factors[i]) == 0)
-            ntest = ntest / favored_factors[i];
+    for (int favored_factor : favored_factors)
+        while ((ntest % favored_factor) == 0)
+            ntest = ntest / favored_factor;
     return ntest == 1;
 }
 
diff --git a/GUI/Model/Data/MaskResultsPresenter.cpp b/GUI/Model/Data/MaskResultsPresenter.cpp
index f66ae033940..b9341533fa0 100644
--- a/GUI/Model/Data/MaskResultsPresenter.cpp
+++ b/GUI/Model/Data/MaskResultsPresenter.cpp
@@ -13,12 +13,14 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Data/MaskResultsPresenter.h"
+
 #include "Device/Data/Datafield.h"
 #include "Device/Mask/IShape2D.h"
 #include "Device/Mask/MaskStack.h"
 #include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Mask/MaskContainerItem.h"
 #include "GUI/Model/Mask/MaskItems.h"
+#include <ranges>
 
 namespace {
 
@@ -32,13 +34,13 @@ Datafield* createMaskPresentation(Data2DItem* data2DItem)
     Datafield* result = data2DItem->c_field()->clone();
     MaskStack detectorMask;
     const QVector<MaskItem*> maskItems = data2DItem->maskContainerItem()->maskItems();
-    for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++)
-        if ((*maskIter)->isVisible()) {
-            if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>((*maskIter)))
+    for (auto maskItem : std::ranges::reverse_view(maskItems))
+        if (maskItem->isVisible()) {
+            if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>(maskItem))
                 roi = roiItem->createShape();
             else {
-                std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
-                detectorMask.maskToStack(*shape, (*maskIter)->maskValue(), false);
+                std::unique_ptr<IShape2D> shape(maskItem->createShape());
+                detectorMask.maskToStack(*shape, maskItem->maskValue(), false);
             }
         }
 
diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index d3f5081451c..b481efc839b 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Detector/DetectorItem.h"
+
 #include "Base/Axis/Scale.h"
 #include "Base/Const/Units.h"
 #include "Base/Util/Assert.h"
@@ -23,6 +24,7 @@
 #include "GUI/Model/Mask/MaskContainerItem.h"
 #include "GUI/Model/Mask/MaskItems.h"
 #include "GUI/Support/XML/Backup.h"
+#include <ranges>
 
 namespace {
 namespace Tag {
@@ -67,13 +69,13 @@ std::unique_ptr<IDetector> DetectorItem::createDetector() const
 
     if (m_maskContainerItem) {
         const QVector<MaskItem*> maskItems = m_maskContainerItem->maskItems();
-        for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++) {
-            if ((*maskIter)->isVisible()) {
-                if (auto* ii = dynamic_cast<RegionOfInterestItem*>(*maskIter)) {
+        for (auto maskItem : std::ranges::reverse_view(maskItems)) {
+            if (maskItem->isVisible()) {
+                if (auto* ii = dynamic_cast<RegionOfInterestItem*>(maskItem)) {
                     result->setRegionOfInterest(ii->xLow(), ii->yLow(), ii->xUp(), ii->yUp());
                 } else {
-                    std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
-                    result->addBinMask(*shape, (*maskIter)->maskValue());
+                    std::unique_ptr<IShape2D> shape(maskItem->createShape());
+                    result->addBinMask(*shape, maskItem->maskValue());
                 }
             }
         }
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 7b0ca05d57f..3d10b1fd21f 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -385,8 +385,8 @@ void JobItem::cropRealData()
     std::unique_ptr<const IDetector> det = iiI->normalDetector();
     ASSERT(det->frame().rank() == 2);
     std::vector<size_t> ai = det->activeIndices();
-    for (size_t i = 0; i < ai.size(); ++i)
-        (*data2DItem->p_field())[ai[i]] = (*origData)[det->roiToFullIndex(ai[i])];
+    for (unsigned long i : ai)
+        (*data2DItem->p_field())[i] = (*origData)[det->roiToFullIndex(i)];
 
     data2DItem->updateDataRange();
 }
diff --git a/GUI/Model/Mask/MaskContainerItem.cpp b/GUI/Model/Mask/MaskContainerItem.cpp
index a674ec35dbe..9c39a7091c1 100644
--- a/GUI/Model/Mask/MaskContainerItem.cpp
+++ b/GUI/Model/Mask/MaskContainerItem.cpp
@@ -94,9 +94,9 @@ void MaskContainerItem::updateMaskNames()
     const auto reg = QRegularExpression("[0-9]");
 
     QMap<QString, int> numMasksByType;
-    for (size_t i = 0; i < m_maskItems.size(); i++) {
+    for (const auto& m_maskItem : m_maskItems) {
 
-        QString name = m_maskItems[i].currentItem()->maskName();
+        QString name = m_maskItem.currentItem()->maskName();
         name.remove(reg);
 
         int numMasks = 1;
@@ -107,7 +107,7 @@ void MaskContainerItem::updateMaskNames()
         numMasksByType.insert(name, numMasks);
         name += QString::number(numMasks);
 
-        m_maskItems[i].currentItem()->setMaskName(name);
+        m_maskItem.currentItem()->setMaskName(name);
     }
 }
 
diff --git a/GUI/View/Instrument/DistributionPlot.cpp b/GUI/View/Instrument/DistributionPlot.cpp
index e20eb6e7d24..922ee0fd61a 100644
--- a/GUI/View/Instrument/DistributionPlot.cpp
+++ b/GUI/View/Instrument/DistributionPlot.cpp
@@ -138,8 +138,8 @@ void DistributionPlot::plot_distributions()
     //... Plot function graph
     std::vector<std::pair<double, double>> graph = distrib->plotGraph();
     double max_y = 0;
-    for (size_t i = 0; i < graph.size(); ++i)
-        max_y = std::max(max_y, graph[i].second);
+    for (auto& i : graph)
+        max_y = std::max(max_y, i.second);
 
     QVector<double> xFunc(graph.size());
     QVector<double> yFunc(graph.size());
diff --git a/GUI/View/PlotScale/SavePlotAssistant.cpp b/GUI/View/PlotScale/SavePlotAssistant.cpp
index 254b0df5c61..f7affd2b8ad 100644
--- a/GUI/View/PlotScale/SavePlotAssistant.cpp
+++ b/GUI/View/PlotScale/SavePlotAssistant.cpp
@@ -103,17 +103,17 @@ QString getFilterString()
 
 bool isValidExtension(const QString& fname)
 {
-    for (int i = 0; i < outFormats.size(); ++i)
-        if (fname.endsWith(outFormats[i].m_file_extention, Qt::CaseInsensitive))
+    for (const auto& outFormat : outFormats)
+        if (fname.endsWith(outFormat.m_file_extention, Qt::CaseInsensitive))
             return true;
     return false;
 }
 
 QString getExtensionFromFilterName(const QString& filterName)
 {
-    for (int i = 0; i < outFormats.size(); ++i)
-        if (outFormats[i].m_filter == filterName)
-            return outFormats[i].m_file_extention;
+    for (const auto& outFormat : outFormats)
+        if (outFormat.m_filter == filterName)
+            return outFormat.m_file_extention;
     return "";
 }
 
diff --git a/Resample/Particle/ReCompound.cpp b/Resample/Particle/ReCompound.cpp
index 8f46d427d49..8bca9fa9c00 100644
--- a/Resample/Particle/ReCompound.cpp
+++ b/Resample/Particle/ReCompound.cpp
@@ -27,16 +27,16 @@ ReCompound::~ReCompound() = default;
 ReCompound* ReCompound::clone() const
 {
     auto* result = new ReCompound(i_layer());
-    for (size_t index = 0; index < m_components.size(); ++index)
-        result->addFormFactor(*m_components[index]);
+    for (auto m_component : m_components)
+        result->addFormFactor(*m_component);
     return result;
 }
 
 double ReCompound::radialExtension() const
 {
     double result{0.0};
-    for (size_t index = 0; index < m_components.size(); ++index)
-        result += m_components[index]->radialExtension();
+    for (auto m_component : m_components)
+        result += m_component->radialExtension();
     return result;
 }
 
@@ -56,22 +56,22 @@ void ReCompound::addFormFactor(const IReParticle& formfactor)
 
 void ReCompound::setAmbientMaterial(const Material& material)
 {
-    for (size_t index = 0; index < m_components.size(); ++index)
-        m_components[index]->setAmbientMaterial(material);
+    for (auto m_component : m_components)
+        m_component->setAmbientMaterial(material);
 }
 
 complex_t ReCompound::theFF(const WavevectorInfo& wavevectors) const
 {
     complex_t result(0.0, 0.0);
-    for (size_t index = 0; index < m_components.size(); ++index)
-        result += m_components[index]->theFF(wavevectors);
+    for (auto m_component : m_components)
+        result += m_component->theFF(wavevectors);
     return result;
 }
 
 SpinMatrix ReCompound::thePolFF(const WavevectorInfo& wavevectors) const
 {
     SpinMatrix result;
-    for (size_t index = 0; index < m_components.size(); ++index)
-        result += m_components[index]->thePolFF(wavevectors);
+    for (auto m_component : m_components)
+        result += m_component->thePolFF(wavevectors);
     return result;
 }
diff --git a/Sample/Particle/Compound.cpp b/Sample/Particle/Compound.cpp
index e384a8a2935..6438f83ac3c 100644
--- a/Sample/Particle/Compound.cpp
+++ b/Sample/Particle/Compound.cpp
@@ -25,8 +25,8 @@ Compound* Compound::clone() const
 {
     auto* result = new Compound();
     result->setAbundance(m_abundance);
-    for (size_t index = 0; index < m_particles.size(); ++index)
-        result->addComponent(*m_particles[index]);
+    for (auto m_particle : m_particles)
+        result->addComponent(*m_particle);
     if (rotation())
         result->rotate(*rotation());
     result->translate(particlePosition());
@@ -73,8 +73,8 @@ void Compound::addComponent(const IParticle& particle, R3 position)
 // enable python lists to std::vector conversion
 void Compound::addComponents(const IParticle& particle, std::vector<R3> positions)
 {
-    for (size_t i = 0; i < positions.size(); ++i)
-        addComponent(particle, positions[i]);
+    for (const auto& position : positions)
+        addComponent(particle, position);
 }
 
 std::vector<const IParticle*> Compound::particles() const
diff --git a/Sim/Fitting/SimDataPair.cpp b/Sim/Fitting/SimDataPair.cpp
index 83914cc198e..3c8f6ecab5a 100644
--- a/Sim/Fitting/SimDataPair.cpp
+++ b/Sim/Fitting/SimDataPair.cpp
@@ -52,18 +52,18 @@ Datafield repositionData(const ScatteringSimulation& simulation, const Datafield
     const IDetector& det = simulation.detector();
     std::vector<size_t> ai = det.activeIndices();
     if (coordSystem.hasSameSizes(data.frame())) {
-        for (size_t i = 0; i < ai.size(); ++i) {
-            values[ai[i]] = data[ai[i]];
+        for (unsigned long i : ai) {
+            values[i] = data[i];
             if (data.hasErrorSigmas())
-                errors[ai[i]] = data.errorSigmas()[ai[i]];
+                errors[i] = data.errorSigmas()[i];
         }
     } else if (haveSameSizes(simulation.detector(), data)) {
         // experimental data has same shape as the detector, we have to copy the original
         // data to a smaller roi map
-        for (size_t i = 0; i < ai.size(); ++i) {
-            values[ai[i]] = data[det.roiToFullIndex(ai[i])];
+        for (unsigned long i : ai) {
+            values[i] = data[det.roiToFullIndex(i)];
             if (data.hasErrorSigmas())
-                errors[ai[i]] = data.errorSigmas()[det.roiToFullIndex(ai[i])];
+                errors[i] = data.errorSigmas()[det.roiToFullIndex(i)];
         }
     } else
         throw std::runtime_error(
diff --git a/Sim/Scan/AlphaScan.cpp b/Sim/Scan/AlphaScan.cpp
index 523bb233b8a..f9c08727957 100644
--- a/Sim/Scan/AlphaScan.cpp
+++ b/Sim/Scan/AlphaScan.cpp
@@ -85,12 +85,12 @@ std::vector<SpecularElement> AlphaScan::generateElements() const
             drawDistribution(m_alpha_distrib.get(), inclinationAt(i) + m_alpha_offset);
         const std::vector<ParameterSample> lambdaDistrib =
             drawDistribution(m_lambda_distrib.get(), wavelengthAt(i));
-        for (size_t j = 0; j < alphaDistrib.size(); ++j) {
-            const double alpha = alphaDistrib[j].value;
-            for (size_t k = 0; k < lambdaDistrib.size(); ++k) {
-                const double lambda = lambdaDistrib[k].value;
+        for (auto j : alphaDistrib) {
+            const double alpha = j.value;
+            for (auto k : lambdaDistrib) {
+                const double lambda = k.value;
                 const bool computable = lambda >= 0 && alpha >= 0 && alpha <= (pi / 2);
-                const double weight = alphaDistrib[j].weight * lambdaDistrib[k].weight;
+                const double weight = j.weight * k.weight;
                 const double footprint = footprintAt(i) ? footprintAt(i)->calculate(alpha) : 1;
                 const R3 veck = vecOfLambdaAlphaPhi(lambda, -alpha);
                 result.emplace_back(SpecularElement(i, computable, intensityAt(i), weight,
diff --git a/Sim/Scan/QzScan.cpp b/Sim/Scan/QzScan.cpp
index c7e698ab6ee..9b00d82d328 100644
--- a/Sim/Scan/QzScan.cpp
+++ b/Sim/Scan/QzScan.cpp
@@ -85,18 +85,17 @@ std::vector<SpecularElement> QzScan::generateElements() const
         const double q0 = m_axis->binCenter(i);
         if (m_qz_distrib) {
             const std::vector<ParameterSample> qzDistrib = m_qz_distrib->distributionSamples();
-            for (size_t j = 0; j < qzDistrib.size(); ++j) {
+            for (auto j : qzDistrib) {
                 double qz = q0;
                 ASSERT(!m_resol_width.empty());
                 if (m_relative_resolution)
-                    qz += q0 * m_resol_width[0] * qzDistrib[j].value;
+                    qz += q0 * m_resol_width[0] * j.value;
                 else if (m_resol_width.size() > 1)
-                    qz += m_resol_width[i] * qzDistrib[j].value;
+                    qz += m_resol_width[i] * j.value;
                 else
-                    qz += m_resol_width[0] * qzDistrib[j].value;
-                SpecularElement ele(i, qz >= 0, qzDistrib[j].weight, intensityAt(i), 1.,
-                                    polarizerMatrixAt(i), analyzerMatrix(),
-                                    R3(0, 0, -(qz + m_offset) / 2));
+                    qz += m_resol_width[0] * j.value;
+                SpecularElement ele(i, qz >= 0, j.weight, intensityAt(i), 1., polarizerMatrixAt(i),
+                                    analyzerMatrix(), R3(0, 0, -(qz + m_offset) / 2));
                 result.emplace_back(std::move(ele));
             }
         } else {
diff --git a/Tests/Unit/Sample/MultiLayerTest.cpp b/Tests/Unit/Sample/MultiLayerTest.cpp
index 7f7539973ed..5cdcb7bf059 100644
--- a/Tests/Unit/Sample/MultiLayerTest.cpp
+++ b/Tests/Unit/Sample/MultiLayerTest.cpp
@@ -212,8 +212,7 @@ TEST_F(MultiLayerTest, MultiLayerComposite)
     int counter(0);
 
     std::vector<const INode*> children = mLayer.nodeChildren();
-    for (size_t index = 0; index < children.size(); ++index) {
-        const INode* sample = children[index];
+    for (auto sample : children) {
         if (counter % 2 == 1) {
             const auto* interface = dynamic_cast<const LayerInterface*>(sample);
             EXPECT_TRUE(nullptr != interface);
-- 
GitLab


From 25f3f95f91f048265d7ae7b066c5576f2c34e48c Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:43:34 +0100
Subject: [PATCH 28/33] corr memory leak

---
 .clang-tidy                   | 12 ++++++++----
 Resample/Processed/Slicer.cpp |  6 +++---
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 666b0f684a9..a49ce5952f8 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -23,10 +23,13 @@ Checks: '*,
 -clang-analyzer-core.CallAndMessage,
 -clang-analyzer-optin.cplusplus.VirtualCall,
 -cppcoreguidelines-pro-type-const-cast,
--cppcoreguidelines-pro-type-static-cast-downcast,
--google-runtime-references,
--misc-non-private-member-variables-in-classes,
-modernize-loop-convert,
+cppcoreguidelines-pro-type-static-cast-downcast,
+
+-*-use-auto,
+-*-use-emplace,
+-*-use-equals-default,
+-*-use-nullptr,
+-*-use-override,
 
 -bugprone-unused-return-value,
 -cppcoreguidelines-explicit-virtual-functions,
@@ -36,6 +39,7 @@ modernize-loop-convert,
 -llvm-qualified-auto,
 -misc-uniqueptr-reset-release,
 -modernize-avoid-bind,
+-modernize-loop-convert,
 -modernize-make-unique,
 -modernize-pass-by-value,
 -modernize-use-default-member-init,
diff --git a/Resample/Processed/Slicer.cpp b/Resample/Processed/Slicer.cpp
index 31d682032f7..54b4a4402f6 100644
--- a/Resample/Processed/Slicer.cpp
+++ b/Resample/Processed/Slicer.cpp
@@ -124,13 +124,13 @@ IFormFactor* doSlice(const IFormFactor* ff, double dz_bottom, double dz_top)
 ReParticle* createParticleSlice(const IFormFactor* ff, ZLimits limits, const R3& position,
                                 const IRotation* rot)
 {
-    const RotMatrix* rotMatrix =
-        rot && !rot->isIdentity() ? new RotMatrix(rot->rotMatrix()) : nullptr;
     const Span span = ff->spanZ(rot) + position.z();
-
     if (span.hig() <= limits.low() || span.low() >= limits.hig())
         return nullptr;
 
+    const RotMatrix* rotMatrix =
+        rot && !rot->isIdentity() ? new RotMatrix(rot->rotMatrix()) : nullptr;
+
     if (limits.low() <= span.low() && span.hig() <= limits.hig())
         return new ReParticle(ff->clone(), new R3(position), rotMatrix);
 
-- 
GitLab


From 6832e894af2a1d92f2d3fcdc44ba46903edf2630 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:52:43 +0100
Subject: [PATCH 29/33] corr code critized by memory leak checker

---
 GUI/View/Project/PythonScriptWidget.cpp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/GUI/View/Project/PythonScriptWidget.cpp b/GUI/View/Project/PythonScriptWidget.cpp
index 7dad5259428..42ce13b3fad 100644
--- a/GUI/View/Project/PythonScriptWidget.cpp
+++ b/GUI/View/Project/PythonScriptWidget.cpp
@@ -36,6 +36,10 @@ PythonScriptWidget::PythonScriptWidget(QWidget* parent)
     , m_textEdit(new QTextEdit)
     , m_cautionSign(new CautionSign(m_textEdit))
 {
+    auto* layout = new QVBoxLayout;
+    setLayout(layout);
+    layout->setContentsMargins(0, 0, 0, 0);
+
     setObjectName("PythonScriptWidget");
     setWindowTitle("Python Script");
     setMinimumSize(128, 128);
@@ -43,6 +47,7 @@ PythonScriptWidget::PythonScriptWidget(QWidget* parent)
     setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
 
     auto* toolbar = new StyledToolbar;
+    layout->addWidget(toolbar);
     toolbar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
 
     auto* exportAction = new QAction(this);
@@ -53,6 +58,7 @@ PythonScriptWidget::PythonScriptWidget(QWidget* parent)
 
     toolbar->addAction(exportAction);
 
+    layout->addWidget(m_textEdit);
     m_textEdit->setReadOnly(true);
     QFont textFont("Monospace");
     m_textEdit->setFont(textFont);
@@ -61,11 +67,6 @@ PythonScriptWidget::PythonScriptWidget(QWidget* parent)
     auto* highlighter = new PythonSyntaxHighlighter(m_textEdit->document());
     Q_UNUSED(highlighter);
 
-    auto* mainLayout = new QVBoxLayout(this);
-    mainLayout->setContentsMargins(0, 0, 0, 0);
-    mainLayout->addWidget(toolbar);
-    mainLayout->addWidget(m_textEdit);
-
     setAttribute(Qt::WA_DeleteOnClose, true);
     GUI::Style::setResizable(this);
     appSettings->loadWindowSizeAndPos(this);
-- 
GitLab


From b09814facde786db8fc16641db9cf8eb733e3dc4 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 10:58:26 +0100
Subject: [PATCH 30/33] tidy/modernize-use-auto

---
 .clang-tidy                                     | 3 +--
 GUI/Model/Model/FitParameterModel.cpp           | 4 ++--
 GUI/Model/Model/ParameterTuningModel.cpp        | 8 ++++----
 GUI/View/FitControl/MinimizerSettingsWidget.cpp | 2 +-
 GUI/View/Tuning/FitParameterWidget.cpp          | 4 ++--
 5 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index a49ce5952f8..8592bdaa268 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -23,9 +23,8 @@ Checks: '*,
 -clang-analyzer-core.CallAndMessage,
 -clang-analyzer-optin.cplusplus.VirtualCall,
 -cppcoreguidelines-pro-type-const-cast,
-cppcoreguidelines-pro-type-static-cast-downcast,
 
--*-use-auto,
+*-use-auto,
 -*-use-emplace,
 -*-use-equals-default,
 -*-use-nullptr,
diff --git a/GUI/Model/Model/FitParameterModel.cpp b/GUI/Model/Model/FitParameterModel.cpp
index 7c747f3f907..2ff98f436dd 100644
--- a/GUI/Model/Model/FitParameterModel.cpp
+++ b/GUI/Model/Model/FitParameterModel.cpp
@@ -240,7 +240,7 @@ QMimeData* FitParameterModel::mimeData(const QModelIndexList& indexes) const
     auto* mimeData = new QMimeData();
     QModelIndex index = indexes.first();
     if (index.isValid()) {
-        QObject* item = static_cast<QObject*>(index.internalPointer());
+        auto* item = static_cast<QObject*>(index.internalPointer());
         if (auto* linkItem = dynamic_cast<LinkItem*>(item)) {
             QString path = linkItem->link();
             ASSERT(m_jobItem);
@@ -276,7 +276,7 @@ bool FitParameterModel::dropMimeData(const QMimeData* data, Qt::DropAction actio
     Q_UNUSED(column);
 
     if (parent.isValid()) {
-        QObject* parentItem = static_cast<QObject*>(parent.internalPointer());
+        auto* parentItem = static_cast<QObject*>(parent.internalPointer());
         if (auto* fitPar = dynamic_cast<FitParameterItem*>(parentItem)) {
             ASSERT(fitPar);
             ParameterItem* parItem =
diff --git a/GUI/Model/Model/ParameterTuningModel.cpp b/GUI/Model/Model/ParameterTuningModel.cpp
index ade797ae66c..5d7b2e67ccc 100644
--- a/GUI/Model/Model/ParameterTuningModel.cpp
+++ b/GUI/Model/Model/ParameterTuningModel.cpp
@@ -107,7 +107,7 @@ QModelIndex ParameterTuningModel::parent(const QModelIndex& index) const
     if (!index.isValid())
         return {};
 
-    QObject* item = static_cast<QObject*>(index.internalPointer());
+    auto* item = static_cast<QObject*>(index.internalPointer());
     if (item->parent() == m_rootObject)
         return {};
 
@@ -123,7 +123,7 @@ int ParameterTuningModel::rowCount(const QModelIndex& parent) const
     if (!parent.isValid())
         return m_rootObject->children().size();
 
-    QObject* item = static_cast<QObject*>(parent.internalPointer());
+    auto* item = static_cast<QObject*>(parent.internalPointer());
     return item->children().size();
 }
 
@@ -177,13 +177,13 @@ QModelIndex ParameterTuningModel::indexForItem(ParameterItem* item) const
 
 ParameterItem* ParameterTuningModel::toParameterItem(const QModelIndex& index)
 {
-    QObject* item = static_cast<QObject*>(index.internalPointer());
+    auto* item = static_cast<QObject*>(index.internalPointer());
     return dynamic_cast<ParameterItem*>(item);
 }
 
 ParameterLabelItem* ParameterTuningModel::toParameterLabelItem(const QModelIndex& index)
 {
-    QObject* item = static_cast<QObject*>(index.internalPointer());
+    auto* item = static_cast<QObject*>(index.internalPointer());
     return dynamic_cast<ParameterLabelItem*>(item);
 }
 
diff --git a/GUI/View/FitControl/MinimizerSettingsWidget.cpp b/GUI/View/FitControl/MinimizerSettingsWidget.cpp
index 5fb6e1d9374..ecac7997666 100644
--- a/GUI/View/FitControl/MinimizerSettingsWidget.cpp
+++ b/GUI/View/FitControl/MinimizerSettingsWidget.cpp
@@ -99,7 +99,7 @@ void MinimizerSettingsWidget::createGroupedAlgorithmsCombo()
             qsizetype header_index = comboBox->count() - 1;
             header_indices.append(header_index);
             non_separator_indices.append(header_index);
-            QStandardItemModel* model = qobject_cast<QStandardItemModel*>(comboBox->model());
+            auto* model = qobject_cast<QStandardItemModel*>(comboBox->model());
             QStandardItem* header_item = model->item(header_index);
             header_item->setSelectable(false);
 
diff --git a/GUI/View/Tuning/FitParameterWidget.cpp b/GUI/View/Tuning/FitParameterWidget.cpp
index 6b4c15b6155..817b91006dc 100644
--- a/GUI/View/Tuning/FitParameterWidget.cpp
+++ b/GUI/View/Tuning/FitParameterWidget.cpp
@@ -313,7 +313,7 @@ QVector<FitParameterItem*> FitParameterWidget::selectedFitParameterItems()
     QVector<FitParameterItem*> result;
     QModelIndexList indexes = m_treeView->selectionModel()->selectedIndexes();
     for (auto index : indexes) {
-        QObject* item = static_cast<QObject*>(index.internalPointer());
+        auto* item = static_cast<QObject*>(index.internalPointer());
         if (auto* fitParItem = dynamic_cast<FitParameterItem*>(item))
             result.push_back(fitParItem);
     }
@@ -339,7 +339,7 @@ QStringList FitParameterWidget::selectedFitParameterLinks()
     QStringList result;
     QModelIndexList indexes = m_treeView->selectionModel()->selectedIndexes();
     for (QModelIndex index : indexes) {
-        QObject* item = static_cast<QObject*>(index.internalPointer());
+        auto* item = static_cast<QObject*>(index.internalPointer());
         if (auto* linkItem = dynamic_cast<LinkItem*>(item))
             result.push_back(linkItem->link());
     }
-- 
GitLab


From a36e4fb14ba6c25200009782b0aa1b50153f081f Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 11:00:52 +0100
Subject: [PATCH 31/33] revert change that requires <ranges>, not yet available
 on mac_x64

---
 .clang-tidy                             |  2 +-
 GUI/Model/Data/MaskResultsPresenter.cpp | 11 +++++------
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 8592bdaa268..e9ed472a49f 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -24,7 +24,6 @@ Checks: '*,
 -clang-analyzer-optin.cplusplus.VirtualCall,
 -cppcoreguidelines-pro-type-const-cast,
 
-*-use-auto,
 -*-use-emplace,
 -*-use-equals-default,
 -*-use-nullptr,
@@ -41,6 +40,7 @@ Checks: '*,
 -modernize-loop-convert,
 -modernize-make-unique,
 -modernize-pass-by-value,
+-modernize-use-auto,
 -modernize-use-default-member-init,
 -modernize-use-using,
 -performance-for-range-copy,
diff --git a/GUI/Model/Data/MaskResultsPresenter.cpp b/GUI/Model/Data/MaskResultsPresenter.cpp
index b9341533fa0..6c60e88b6ea 100644
--- a/GUI/Model/Data/MaskResultsPresenter.cpp
+++ b/GUI/Model/Data/MaskResultsPresenter.cpp
@@ -20,7 +20,6 @@
 #include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Mask/MaskContainerItem.h"
 #include "GUI/Model/Mask/MaskItems.h"
-#include <ranges>
 
 namespace {
 
@@ -34,13 +33,13 @@ Datafield* createMaskPresentation(Data2DItem* data2DItem)
     Datafield* result = data2DItem->c_field()->clone();
     MaskStack detectorMask;
     const QVector<MaskItem*> maskItems = data2DItem->maskContainerItem()->maskItems();
-    for (auto maskItem : std::ranges::reverse_view(maskItems))
-        if (maskItem->isVisible()) {
-            if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>(maskItem))
+    for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++)
+        if ((*maskIter)->isVisible()) {
+            if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>((*maskIter)))
                 roi = roiItem->createShape();
             else {
-                std::unique_ptr<IShape2D> shape(maskItem->createShape());
-                detectorMask.maskToStack(*shape, maskItem->maskValue(), false);
+                std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
+                detectorMask.maskToStack(*shape, (*maskIter)->maskValue(), false);
             }
         }
 
-- 
GitLab


From 64b5a5f634a26f632f457df62f11ffaa0757d505 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 11:08:11 +0100
Subject: [PATCH 32/33] emplace_back w/o c'tor

---
 .clang-tidy                                    |  2 +-
 Sample/Correlations/IDistribution2DSampler.cpp |  2 +-
 Sample/Shapes/IShape3D.cpp                     | 10 +++++-----
 Sim/Scan/AlphaScan.cpp                         |  5 ++---
 Tests/Unit/Sample/ParticleCompositionTest.cpp  |  2 +-
 5 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index e9ed472a49f..e5cd5da044c 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -24,7 +24,7 @@ Checks: '*,
 -clang-analyzer-optin.cplusplus.VirtualCall,
 -cppcoreguidelines-pro-type-const-cast,
 
--*-use-emplace,
+*-use-emplace,
 -*-use-equals-default,
 -*-use-nullptr,
 -*-use-override,
diff --git a/Sample/Correlations/IDistribution2DSampler.cpp b/Sample/Correlations/IDistribution2DSampler.cpp
index 4bd499365e3..c846b7d8e48 100644
--- a/Sample/Correlations/IDistribution2DSampler.cpp
+++ b/Sample/Correlations/IDistribution2DSampler.cpp
@@ -74,7 +74,7 @@ std::pair<double, double> samplingZiggurat(double r, double x_func_max, double (
             y_lower = func_phi(x_max);
         }
 
-        boxes.emplace_back(ZigguratBox(x_min, x_max, y_max, y_lower));
+        boxes.emplace_back(x_min, x_max, y_max, y_lower);
 
         cum_area_box += box_width * y_max;
         cum_area_vector.emplace_back(cum_area_box);
diff --git a/Sample/Shapes/IShape3D.cpp b/Sample/Shapes/IShape3D.cpp
index dc6d18c4477..0627d701359 100644
--- a/Sample/Shapes/IShape3D.cpp
+++ b/Sample/Shapes/IShape3D.cpp
@@ -70,7 +70,7 @@ std::vector<R3> EllipseVerticesXtrunc(double x, double r_y, double r_z, double z
         double z = r_z * std::sin(angle) - z_b; // bottom is at 0, top at z_t-z_b
 
         if (0 <= z && z <= (z_t - z_b))
-            result.emplace_back(R3(x, y, z));
+            result.emplace_back(x, y, z);
     }
     double alpha_t = atan(z_t / sqrt(r_z * r_z - z_t * z_t) * r_z / r_y);
     double alpha_b = atan(z_b / sqrt(r_z * r_z - z_b * z_b) * r_z / r_y);
@@ -78,10 +78,10 @@ std::vector<R3> EllipseVerticesXtrunc(double x, double r_y, double r_z, double z
     double y_t = r_y * std::cos(alpha_t);
     double y_b = r_y * std::cos(alpha_b);
 
-    result.emplace_back(R3(x, y_t, z_t - z_b));
-    result.emplace_back(R3(x, -y_t, z_t - z_b));
-    result.emplace_back(R3(x, y_b, 0));
-    result.emplace_back(R3(x, -y_b, 0));
+    result.emplace_back(x, y_t, z_t - z_b);
+    result.emplace_back(x, -y_t, z_t - z_b);
+    result.emplace_back(x, y_b, 0);
+    result.emplace_back(x, -y_b, 0);
 
     return result;
 }
diff --git a/Sim/Scan/AlphaScan.cpp b/Sim/Scan/AlphaScan.cpp
index f9c08727957..2ea97985b19 100644
--- a/Sim/Scan/AlphaScan.cpp
+++ b/Sim/Scan/AlphaScan.cpp
@@ -93,9 +93,8 @@ std::vector<SpecularElement> AlphaScan::generateElements() const
                 const double weight = j.weight * k.weight;
                 const double footprint = footprintAt(i) ? footprintAt(i)->calculate(alpha) : 1;
                 const R3 veck = vecOfLambdaAlphaPhi(lambda, -alpha);
-                result.emplace_back(SpecularElement(i, computable, intensityAt(i), weight,
-                                                    footprint, polarizerMatrixAt(i),
-                                                    analyzerMatrix(), veck));
+                result.emplace_back(i, computable, intensityAt(i), weight, footprint,
+                                    polarizerMatrixAt(i), analyzerMatrix(), veck);
             }
         }
     }
diff --git a/Tests/Unit/Sample/ParticleCompositionTest.cpp b/Tests/Unit/Sample/ParticleCompositionTest.cpp
index 82b42018795..88ca7db4e8f 100644
--- a/Tests/Unit/Sample/ParticleCompositionTest.cpp
+++ b/Tests/Unit/Sample/ParticleCompositionTest.cpp
@@ -10,7 +10,7 @@ TEST(CompoundTest, CompoundDefaultConstructor)
 {
     std::unique_ptr<Compound> composition(new Compound());
     std::vector<R3> positions;
-    positions.emplace_back(R3());
+    positions.emplace_back();
     EXPECT_EQ(0u, composition->nbrParticles());
 }
 
-- 
GitLab


From d0094ab95f4267026f31782fbd6ea2680e40bf43 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Thu, 30 Nov 2023 11:10:09 +0100
Subject: [PATCH 33/33] revert one more <ranges>

---
 GUI/Model/Detector/DetectorItem.cpp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index b481efc839b..7922370e814 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -24,7 +24,6 @@
 #include "GUI/Model/Mask/MaskContainerItem.h"
 #include "GUI/Model/Mask/MaskItems.h"
 #include "GUI/Support/XML/Backup.h"
-#include <ranges>
 
 namespace {
 namespace Tag {
@@ -69,13 +68,13 @@ std::unique_ptr<IDetector> DetectorItem::createDetector() const
 
     if (m_maskContainerItem) {
         const QVector<MaskItem*> maskItems = m_maskContainerItem->maskItems();
-        for (auto maskItem : std::ranges::reverse_view(maskItems)) {
-            if (maskItem->isVisible()) {
-                if (auto* ii = dynamic_cast<RegionOfInterestItem*>(maskItem)) {
+        for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++) {
+            if ((*maskIter)->isVisible()) {
+                if (auto* ii = dynamic_cast<RegionOfInterestItem*>(*maskIter)) {
                     result->setRegionOfInterest(ii->xLow(), ii->yLow(), ii->xUp(), ii->yUp());
                 } else {
-                    std::unique_ptr<IShape2D> shape(maskItem->createShape());
-                    result->addBinMask(*shape, maskItem->maskValue());
+                    std::unique_ptr<IShape2D> shape((*maskIter)->createShape());
+                    result->addBinMask(*shape, (*maskIter)->maskValue());
                 }
             }
         }
-- 
GitLab