Skip to content

Commit 6f53cda

Browse files
authored
Fix #14420 (Premium: Add option to enable safety profiles) (danmar#8143)
1 parent a3601b2 commit 6f53cda

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

cli/cmdlineparser.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,7 +1115,8 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
11151115
"misra-c++-2023",
11161116
"misra-cpp-2023",
11171117
"bughunting",
1118-
"safety", // TODO: deprecate in favor of the regular --saftey/--no-safety
1118+
"safety", // TODO: deprecate in favor of the regular --safety/--no-safety
1119+
"safety-profiles",
11191120
"debug-progress"};
11201121
// valid options --premium-..=
11211122
const std::set<std::string> valid2{
@@ -1133,7 +1134,7 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
11331134
mSettings.premiumArgs += " ";
11341135
const std::string p(argv[i] + 10);
11351136
const std::string p2(p.find('=') != std::string::npos ? p.substr(0, p.find('=')) : "");
1136-
const bool isCodingStandard = startsWith(p, "autosar") || startsWith(p,"cert-") || startsWith(p,"misra-");
1137+
const bool isCodingStandard = startsWith(p, "autosar") || startsWith(p,"cert-") || startsWith(p,"misra-") || p == "safety-profiles";
11371138
const std::string p3(endsWith(p,":all") && isCodingStandard ? p.substr(0,p.rfind(':')) : p);
11381139
if (!valid.count(p3) && !valid2.count(p2)) {
11391140
mLogger.printError("invalid --premium option '" + (p2.empty() ? p : p2) + "'.");

gui/projectfile.ui

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,13 @@
966966
</property>
967967
</widget>
968968
</item>
969+
<item>
970+
<widget class="QCheckBox" name="mSafetyProfiles">
971+
<property name="text">
972+
<string>Safety profiles (defined in C++ core guidelines)</string>
973+
</property>
974+
</widget>
975+
</item>
969976
</layout>
970977
</widget>
971978
</item>

gui/projectfiledialog.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const char CODING_STANDARD_MISRA_CPP_2023[] = "misra-cpp-2023";
6969
const char CODING_STANDARD_CERT_C[] = "cert-c-2016";
7070
const char CODING_STANDARD_CERT_CPP[] = "cert-cpp-2016";
7171
const char CODING_STANDARD_AUTOSAR[] = "autosar";
72+
const char CODING_STANDARD_SAFETY_PROFILES[] = "safety-profiles";
7273

7374
/** Return paths from QListWidget */
7475
static QStringList getPaths(const QListWidget *list)
@@ -459,6 +460,7 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
459460
mUI->mCertC2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_C));
460461
mUI->mCertCpp2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_CPP));
461462
mUI->mAutosar->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_AUTOSAR));
463+
mUI->mSafetyProfiles->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_SAFETY_PROFILES));
462464

463465
if (projectFile->getCertIntPrecision() <= 0)
464466
mUI->mEditCertIntPrecision->setText(QString());
@@ -468,6 +470,7 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
468470
mUI->mCertC2016->setEnabled(mPremium);
469471
mUI->mCertCpp2016->setEnabled(mPremium);
470472
mUI->mAutosar->setEnabled(mPremium);
473+
mUI->mSafetyProfiles->setEnabled(mPremium);
471474
mUI->mLabelCertIntPrecision->setVisible(mPremium);
472475
mUI->mEditCertIntPrecision->setVisible(mPremium);
473476
mUI->mBughunting->setChecked(mPremium && projectFile->getBughunting());
@@ -560,6 +563,8 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
560563
codingStandards << CODING_STANDARD_MISRA_CPP_2023;
561564
if (mUI->mAutosar->isChecked())
562565
codingStandards << CODING_STANDARD_AUTOSAR;
566+
if (mUI->mSafetyProfiles->isChecked())
567+
codingStandards << CODING_STANDARD_SAFETY_PROFILES;
563568
projectFile->setCodingStandards(std::move(codingStandards));
564569
projectFile->setCertIntPrecision(mUI->mEditCertIntPrecision->text().toInt());
565570
projectFile->setBughunting(mUI->mBughunting->isChecked());

0 commit comments

Comments
 (0)