Skip to content

Commit 2c53b73

Browse files
committed
GUI: only run misra addon in premium version. remove misra rule texts configuration that is not needed in premium.
1 parent 3c21b9c commit 2c53b73

8 files changed

+33
-136
lines changed

gui/common.h

-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
#define SETTINGS_LANGUAGE "Application language"
8181
#define SETTINGS_GLOBAL_INCLUDE_PATHS "Global include paths"
8282
#define SETTINGS_PYTHON_PATH "Python path"
83-
#define SETTINGS_MISRA_FILE "MISRA C 2012 file"
8483
#define SETTINGS_CLANG_PATH "Clang path"
8584
#define SETTINGS_VS_INCLUDE_PATHS "VS include paths"
8685
#define SETTINGS_INLINE_SUPPRESSIONS "Inline suppressions"

gui/mainwindow.cpp

+4-10
Original file line numberDiff line numberDiff line change
@@ -971,15 +971,6 @@ Settings MainWindow::getCppcheckSettings()
971971
json += "{ \"script\":\"" + addonFilePath + "\"";
972972
if (!pythonCmd.isEmpty())
973973
json += ", \"python\":\"" + pythonCmd + "\"";
974-
QString misraFile = fromNativePath(mSettings->value(SETTINGS_MISRA_FILE).toString());
975-
if (addon == "misra" && !misraFile.isEmpty()) {
976-
QString arg;
977-
if (misraFile.endsWith(".pdf", Qt::CaseInsensitive))
978-
arg = "--misra-pdf=" + misraFile;
979-
else
980-
arg = "--rule-texts=" + misraFile;
981-
json += ", \"args\":[\"" + arg + "\"]";
982-
}
983974
json += " }";
984975
result.addons.emplace(json.toStdString());
985976
}
@@ -1923,8 +1914,11 @@ static int getVersion(const QString& nameWithVersion) {
19231914
for (const auto c: nameWithVersion) {
19241915
if (c == '\n' || c == '\r')
19251916
break;
1926-
else if (c == ' ')
1917+
else if (c == ' ') {
1918+
if (ret > 0 && dot == 1 && nameWithVersion.endsWith(" dev"))
1919+
return ret * 1000000 + v * 1000 + 500;
19271920
dot = ret = v = 0;
1921+
}
19281922
else if (c == '.') {
19291923
++dot;
19301924
ret = ret * 1000 + v;

gui/projectfile.ui

+10-28
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@
779779
<item>
780780
<widget class="QGroupBox" name="groupBox_12">
781781
<property name="title">
782-
<string>Coding standards</string>
782+
<string>Coding standards (Premium)</string>
783783
</property>
784784
<layout class="QVBoxLayout" name="verticalLayout_20">
785785
<item>
@@ -790,32 +790,14 @@
790790
</widget>
791791
</item>
792792
<item>
793-
<layout class="QHBoxLayout" name="mLayoutMisraRuleTexts">
794-
<item>
795-
<widget class="QLabel" name="mLabelMisraFile">
796-
<property name="text">
797-
<string>MISRA rule texts</string>
798-
</property>
799-
</widget>
800-
</item>
801-
<item>
802-
<widget class="QLineEdit" name="mEditMisraFile">
803-
<property name="toolTip">
804-
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Copy/paste the text from Appendix A &amp;quot;Summary of guidelines&amp;quot; from the MISRA C 2012 pdf to a text file.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
805-
</property>
806-
</widget>
807-
</item>
808-
<item>
809-
<widget class="QPushButton" name="mBtnBrowseMisraFile">
810-
<property name="text">
811-
<string>...</string>
812-
</property>
813-
</widget>
814-
</item>
815-
</layout>
793+
<widget class="QCheckBox" name="mMisraCpp2008">
794+
<property name="text">
795+
<string>Misra C++ 2008</string>
796+
</property>
797+
</widget>
816798
</item>
817799
<item>
818-
<widget class="QCheckBox" name="mPremiumCertC">
800+
<widget class="QCheckBox" name="mCertC2016">
819801
<property name="text">
820802
<string>Cert C</string>
821803
</property>
@@ -836,9 +818,9 @@
836818
</layout>
837819
</item>
838820
<item>
839-
<widget class="QCheckBox" name="mMisraCpp2008">
821+
<widget class="QCheckBox" name="mCertCpp2016">
840822
<property name="text">
841-
<string>Misra C++ 2008</string>
823+
<string>Cert C++</string>
842824
</property>
843825
</widget>
844826
</item>
@@ -855,7 +837,7 @@
855837
<item>
856838
<widget class="QGroupBox" name="mGroupboxBughunting">
857839
<property name="title">
858-
<string>Bug hunting</string>
840+
<string>Bug hunting (Premium)</string>
859841
</property>
860842
<layout class="QVBoxLayout" name="verticalLayout_21">
861843
<item>

gui/projectfiledialog.cpp

+19-39
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
static const char ADDON_MISRA[] = "misra";
4444
static const char CODING_STANDARD_MISRA_CPP_2008[] = "misra-cpp-2008";
4545
static const char CODING_STANDARD_CERT_C[] = "cert-c-2016";
46+
static const char CODING_STANDARD_CERT_CPP[] = "cert-cpp-2016";
4647
static const char CODING_STANDARD_AUTOSAR[] = "autosar";
4748

4849
class QModelIndex;
@@ -224,7 +225,6 @@ ProjectFileDialog::ProjectFileDialog(ProjectFile *projectFile, bool premium, QWi
224225
connect(mUI->mBtnAddSuppression, &QPushButton::clicked, this, &ProjectFileDialog::addSuppression);
225226
connect(mUI->mBtnRemoveSuppression, &QPushButton::clicked, this, &ProjectFileDialog::removeSuppression);
226227
connect(mUI->mListSuppressions, &QListWidget::doubleClicked, this, &ProjectFileDialog::editSuppression);
227-
connect(mUI->mBtnBrowseMisraFile, &QPushButton::clicked, this, &ProjectFileDialog::browseMisraFile);
228228
connect(mUI->mChkAllVsConfigs, &QCheckBox::clicked, this, &ProjectFileDialog::checkAllVSConfigs);
229229
loadFromProjectFile(projectFile);
230230
}
@@ -349,35 +349,30 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
349349
const QString dataDir = getDataDir();
350350
updateAddonCheckBox(mUI->mAddonThreadSafety, projectFile, dataDir, "threadsafety");
351351
updateAddonCheckBox(mUI->mAddonY2038, projectFile, dataDir, "y2038");
352-
updateAddonCheckBox(mUI->mMisraC2012, projectFile, dataDir, ADDON_MISRA);
353-
354-
const QString &misraFile = settings.value(SETTINGS_MISRA_FILE, QString()).toString();
355-
mUI->mEditMisraFile->setText(misraFile);
356-
if (mPremium) {
357-
mUI->mLabelMisraFile->setVisible(false);
358-
mUI->mEditMisraFile->setVisible(false);
359-
mUI->mBtnBrowseMisraFile->setVisible(false);
360-
} else if (!mUI->mMisraC2012->isEnabled()) {
361-
mUI->mEditMisraFile->setEnabled(false);
362-
mUI->mBtnBrowseMisraFile->setEnabled(false);
363-
}
364352

365-
mUI->mPremiumCertC->setChecked(projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_C));
366-
mUI->mMisraCpp2008->setChecked(projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2008));
367-
mUI->mAutosar->setChecked(projectFile->getCodingStandards().contains(CODING_STANDARD_AUTOSAR));
353+
if (mPremium)
354+
updateAddonCheckBox(mUI->mMisraC2012, projectFile, dataDir, ADDON_MISRA);
355+
else
356+
mUI->mMisraC2012->setChecked(false);
357+
mUI->mCertC2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_C));
358+
mUI->mCertCpp2016->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_CERT_CPP));
359+
mUI->mMisraCpp2008->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_CPP_2008));
360+
mUI->mAutosar->setChecked(mPremium && projectFile->getCodingStandards().contains(CODING_STANDARD_AUTOSAR));
368361

369362
if (projectFile->getCertIntPrecision() <= 0)
370363
mUI->mEditCertIntPrecision->setText(QString());
371364
else
372365
mUI->mEditCertIntPrecision->setText(QString::number(projectFile->getCertIntPrecision()));
373366

374-
mUI->mPremiumCertC->setVisible(mPremium);
375-
mUI->mMisraCpp2008->setVisible(mPremium);
376-
mUI->mAutosar->setVisible(mPremium);
367+
mUI->mMisraC2012->setEnabled(mPremium);
368+
mUI->mMisraCpp2008->setEnabled(mPremium);
369+
mUI->mCertC2016->setEnabled(mPremium);
370+
mUI->mCertCpp2016->setEnabled(mPremium);
371+
mUI->mAutosar->setEnabled(mPremium);
377372
mUI->mLabelCertIntPrecision->setVisible(mPremium);
378373
mUI->mEditCertIntPrecision->setVisible(mPremium);
379-
mUI->mBughunting->setChecked(projectFile->getBughunting());
380-
mUI->mGroupboxBughunting->setVisible(mPremium);
374+
mUI->mBughunting->setChecked(mPremium && projectFile->getBughunting());
375+
mUI->mBughunting->setEnabled(mPremium);
381376

382377
mUI->mToolClangAnalyzer->setChecked(projectFile->getClangAnalyzer());
383378
mUI->mToolClangTidy->setChecked(projectFile->getClangTidy());
@@ -444,8 +439,10 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
444439
addons << ADDON_MISRA;
445440
projectFile->setAddons(addons);
446441
QStringList codingStandards;
447-
if (mUI->mPremiumCertC->isChecked())
442+
if (mUI->mCertC2016->isChecked())
448443
codingStandards << CODING_STANDARD_CERT_C;
444+
if (mUI->mCertCpp2016->isChecked())
445+
codingStandards << CODING_STANDARD_CERT_CPP;
449446
if (mUI->mMisraCpp2008->isChecked())
450447
codingStandards << CODING_STANDARD_MISRA_CPP_2008;
451448
if (mUI->mAutosar->isChecked())
@@ -902,20 +899,3 @@ int ProjectFileDialog::getSuppressionIndex(const QString &shortText) const
902899
}
903900
return -1;
904901
}
905-
906-
void ProjectFileDialog::browseMisraFile()
907-
{
908-
const QString fileName = QFileDialog::getOpenFileName(this,
909-
tr("Select MISRA rule texts file"),
910-
QDir::homePath(),
911-
tr("MISRA rule texts file (%1)").arg("*.txt"));
912-
if (!fileName.isEmpty()) {
913-
QSettings settings;
914-
mUI->mEditMisraFile->setText(fileName);
915-
settings.setValue(SETTINGS_MISRA_FILE, fileName);
916-
917-
mUI->mMisraC2012->setText("MISRA C 2012");
918-
mUI->mMisraC2012->setEnabled(true);
919-
updateAddonCheckBox(mUI->mMisraC2012, nullptr, getDataDir(), ADDON_MISRA);
920-
}
921-
}

gui/projectfiledialog.h

-5
Original file line numberDiff line numberDiff line change
@@ -267,11 +267,6 @@ protected slots:
267267
*/
268268
void editSuppression(const QModelIndex &index);
269269

270-
/**
271-
* @brief Browse for misra file
272-
*/
273-
void browseMisraFile();
274-
275270
/**
276271
* @brief Check for all VS configurations
277272
*/

gui/settings.ui

-34
Original file line numberDiff line numberDiff line change
@@ -324,40 +324,6 @@
324324
</layout>
325325
</widget>
326326
</item>
327-
<item>
328-
<widget class="QGroupBox" name="groupBox_4">
329-
<property name="title">
330-
<string>MISRA addon</string>
331-
</property>
332-
<layout class="QVBoxLayout" name="verticalLayout_7">
333-
<item>
334-
<layout class="QHBoxLayout" name="horizontalLayout_4">
335-
<item>
336-
<widget class="QLabel" name="label_4">
337-
<property name="text">
338-
<string>MISRA rule texts file</string>
339-
</property>
340-
</widget>
341-
</item>
342-
<item>
343-
<widget class="QLineEdit" name="mEditMisraFile">
344-
<property name="toolTip">
345-
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Copy/paste the text from Appendix A &amp;quot;Summary of guidelines&amp;quot; from the MISRA C 2012 pdf to a text file.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
346-
</property>
347-
</widget>
348-
</item>
349-
<item>
350-
<widget class="QPushButton" name="mBtnBrowseMisraFile">
351-
<property name="text">
352-
<string>...</string>
353-
</property>
354-
</widget>
355-
</item>
356-
</layout>
357-
</item>
358-
</layout>
359-
</widget>
360-
</item>
361327
<item>
362328
<spacer name="verticalSpacer_3">
363329
<property name="orientation">

gui/settingsdialog.cpp

-14
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,6 @@ SettingsDialog::SettingsDialog(ApplicationList *list,
6565
mUI->mCheckForUpdates->setCheckState(boolToCheckState(settings.value(SETTINGS_CHECK_FOR_UPDATES, false).toBool()));
6666
mUI->mEditPythonPath->setText(settings.value(SETTINGS_PYTHON_PATH, QString()).toString());
6767
validateEditPythonPath();
68-
if (premium)
69-
mUI->mEditMisraFile->setVisible(false);
70-
else
71-
mUI->mEditMisraFile->setText(settings.value(SETTINGS_MISRA_FILE, QString()).toString());
72-
mUI->mEditMisraFile->setText(settings.value(SETTINGS_MISRA_FILE, QString()).toString());
7368

7469
#ifdef Q_OS_WIN
7570
//mUI->mTabClang->setVisible(true);
@@ -99,7 +94,6 @@ SettingsDialog::SettingsDialog(ApplicationList *list,
9994
this, SLOT(editApplication()));
10095

10196
connect(mUI->mBtnBrowsePythonPath, &QPushButton::clicked, this, &SettingsDialog::browsePythonPath);
102-
connect(mUI->mBtnBrowseMisraFile, &QPushButton::clicked, this, &SettingsDialog::browseMisraFile);
10397
connect(mUI->mBtnEditTheme, SIGNAL(clicked()), this, SLOT(editCodeEditorStyle()));
10498
connect(mUI->mThemeSystem, SIGNAL(released()), this, SLOT(setCodeEditorStyleDefault()));
10599
connect(mUI->mThemeDark, SIGNAL(released()), this, SLOT(setCodeEditorStyleDefault()));
@@ -191,7 +185,6 @@ void SettingsDialog::saveSettingValues() const
191185
saveCheckboxValue(&settings, mUI->mShowErrorId, SETTINGS_SHOW_ERROR_ID);
192186
saveCheckboxValue(&settings, mUI->mCheckForUpdates, SETTINGS_CHECK_FOR_UPDATES);
193187
settings.setValue(SETTINGS_PYTHON_PATH, mUI->mEditPythonPath->text());
194-
settings.setValue(SETTINGS_MISRA_FILE, mUI->mEditMisraFile->text());
195188

196189
#ifdef Q_OS_WIN
197190
settings.setValue(SETTINGS_CLANG_PATH, mUI->mEditClangPath->text());
@@ -357,13 +350,6 @@ void SettingsDialog::browsePythonPath()
357350
mUI->mEditPythonPath->setText(fileName);
358351
}
359352

360-
void SettingsDialog::browseMisraFile()
361-
{
362-
const QString fileName = QFileDialog::getOpenFileName(this, tr("Select MISRA File"), QDir::homePath(), "Misra File (*.pdf *.txt)");
363-
if (!fileName.isEmpty())
364-
mUI->mEditMisraFile->setText(fileName);
365-
}
366-
367353
// Slot to set default light style
368354
void SettingsDialog::setCodeEditorStyleDefault()
369355
{

gui/settingsdialog.h

-5
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,6 @@ protected slots:
141141
/** @brief Slot for browsing for the clang binary */
142142
void browseClangPath();
143143

144-
/**
145-
* @brief Browse for MISRA file
146-
*/
147-
void browseMisraFile();
148-
149144
/**
150145
* @brief Set Code Editor Style to Default
151146
*/

0 commit comments

Comments
 (0)