Skip to content

Commit 5bb02e0

Browse files
olabetskyidanmar
authored andcommitted
Fix #12746: Add Misra C++ Version dropBox for gui (cppcheck-opensource#6413)
1 parent 4108369 commit 5bb02e0

2 files changed

Lines changed: 47 additions & 8 deletions

File tree

gui/projectfile.ui

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -869,11 +869,42 @@
869869
</layout>
870870
</item>
871871
<item>
872-
<widget class="QCheckBox" name="mMisraCpp2008">
873-
<property name="text">
874-
<string>Misra C++ 2008</string>
875-
</property>
876-
</widget>
872+
<layout class="QHBoxLayout" name="horizontalLayout_11">
873+
<item>
874+
<widget class="QCheckBox" name="mMisraCpp">
875+
<property name="text">
876+
<string>Misra C++</string>
877+
</property>
878+
</widget>
879+
</item>
880+
<item>
881+
<widget class="QComboBox" name="mMisraCppVersion">
882+
<item>
883+
<property name="text">
884+
<string>2008</string>
885+
</property>
886+
</item>
887+
<item>
888+
<property name="text">
889+
<string>2023</string>
890+
</property>
891+
</item>
892+
</widget>
893+
</item>
894+
<item>
895+
<spacer name="horizontalSpacer_5">
896+
<property name="orientation">
897+
<enum>Qt::Horizontal</enum>
898+
</property>
899+
<property name="sizeHint" stdset="0">
900+
<size>
901+
<width>40</width>
902+
<height>20</height>
903+
</size>
904+
</property>
905+
</spacer>
906+
</item>
907+
</layout>
877908
</item>
878909
<item>
879910
<widget class="QCheckBox" name="mCertC2016">

gui/projectfiledialog.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
static constexpr char ADDON_MISRA[] = "misra";
6161
static constexpr char CODING_STANDARD_MISRA_C_2023[] = "misra-c-2023";
6262
static constexpr char CODING_STANDARD_MISRA_CPP_2008[] = "misra-cpp-2008";
63+
static constexpr char CODING_STANDARD_MISRA_CPP_2023[] = "misra-cpp-2023";
6364
static constexpr char CODING_STANDARD_CERT_C[] = "cert-c-2016";
6465
static constexpr char CODING_STANDARD_CERT_CPP[] = "cert-cpp-2016";
6566
static constexpr char CODING_STANDARD_AUTOSAR[] = "autosar";
@@ -391,17 +392,22 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
391392
mUI->mBtnBrowseMisraFile->setEnabled(false);
392393
}
393394

395+
mUI->mMisraCpp->setEnabled(mPremium);
396+
mUI->mMisraCppVersion->setEnabled(mUI->mMisraCpp->isChecked());
397+
connect(mUI->mMisraCpp, &QCheckBox::toggled, mUI->mMisraCppVersion, &QComboBox::setEnabled);
398+
399+
mUI->mMisraCppVersion->setVisible(mPremium);
400+
mUI->mMisraCppVersion->setCurrentIndex(projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2023));
401+
394402
mUI->mCertC2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_C));
395403
mUI->mCertCpp2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_CPP));
396-
mUI->mMisraCpp2008->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2008));
397404
mUI->mAutosar->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_AUTOSAR));
398405

399406
if (projectFile->getCertIntPrecision() <= 0)
400407
mUI->mEditCertIntPrecision->setText(QString());
401408
else
402409
mUI->mEditCertIntPrecision->setText(QString::number(projectFile->getCertIntPrecision()));
403410

404-
mUI->mMisraCpp2008->setEnabled(mPremium);
405411
mUI->mCertC2016->setEnabled(mPremium);
406412
mUI->mCertCpp2016->setEnabled(mPremium);
407413
mUI->mAutosar->setEnabled(mPremium);
@@ -482,8 +488,10 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
482488
codingStandards << CODING_STANDARD_CERT_CPP;
483489
if (mPremium && mUI->mMisraVersion->currentIndex() == 1)
484490
codingStandards << CODING_STANDARD_MISRA_C_2023;
485-
if (mUI->mMisraCpp2008->isChecked())
491+
if (mUI->mMisraCpp->isChecked() && mUI->mMisraCppVersion->currentIndex() == 0)
486492
codingStandards << CODING_STANDARD_MISRA_CPP_2008;
493+
if (mUI->mMisraCpp->isChecked() && mUI->mMisraCppVersion->currentIndex() == 1)
494+
codingStandards << CODING_STANDARD_MISRA_CPP_2023;
487495
if (mUI->mAutosar->isChecked())
488496
codingStandards << CODING_STANDARD_AUTOSAR;
489497
projectFile->setCodingStandards(std::move(codingStandards));

0 commit comments

Comments
 (0)