Skip to content

Commit 0c259cb

Browse files
committed
1
1 parent 0403b22 commit 0c259cb

23 files changed

+6917
-1980
lines changed

gui/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ CheckOptions:
2121
QT_WRAP_UI(uis_hdrs ${uis})
2222
QT_ADD_RESOURCES(resources "gui.qrc")
2323
# TODO: passing "-no-obsolete" here breaks the translations
24-
QT_CREATE_TRANSLATION(qms ${CMAKE_CURRENT_SOURCE_DIR} ${tss})
25-
list(APPEND cppcheck-gui-deps ${hdrs} ${uis_hdrs} ${resources} ${qms})
24+
# TODO fix this, we get updated ts files even if no related changes are made.
25+
#QT_CREATE_TRANSLATION(qms ${CMAKE_CURRENT_SOURCE_DIR} ${tss})
26+
list(APPEND cppcheck-gui-deps ${hdrs} ${uis_hdrs} ${resources}) # ${qms})
2627
add_custom_target(gui-build-deps SOURCES ${cppcheck-gui-deps})
2728

2829
list(APPEND cppcheck-gui_SOURCES ${srcs})

gui/cppcheck_de.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_es.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_fi.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_fr.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_it.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_ja.ts

+487-141
Large diffs are not rendered by default.

gui/cppcheck_ka.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_ko.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_nl.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_ru.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_sr.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_sv.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_zh_CN.ts

+490-140
Large diffs are not rendered by default.

gui/cppcheck_zh_TW.ts

+487-141
Large diffs are not rendered by default.

gui/mainwindow.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -1134,10 +1134,17 @@ QPair<bool,Settings> MainWindow::getCppcheckSettings()
11341134

11351135
result.maxCtuDepth = mProjectFile->getMaxCtuDepth();
11361136
result.maxTemplateRecursion = mProjectFile->getMaxTemplateRecursion();
1137-
if (mProjectFile->isCheckLevelExhaustive())
1138-
result.setCheckLevel(Settings::CheckLevel::exhaustive);
1139-
else
1137+
switch (mProjectFile->getCheckLevel()) {
1138+
case ProjectFile::CheckLevel::reduced:
1139+
result.setCheckLevel(Settings::CheckLevel::reduced);
1140+
break;
1141+
case ProjectFile::CheckLevel::normal:
11401142
result.setCheckLevel(Settings::CheckLevel::normal);
1143+
break;
1144+
case ProjectFile::CheckLevel::exhaustive:
1145+
result.setCheckLevel(Settings::CheckLevel::exhaustive);
1146+
break;
1147+
};
11411148
result.checkHeaders = mProjectFile->getCheckHeaders();
11421149
result.checkUnusedTemplates = mProjectFile->getCheckUnusedTemplates();
11431150
result.safeChecks.classes = mProjectFile->safeChecks.classes;

gui/projectfile.cpp

+11-5
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,12 @@ bool ProjectFile::read(const QString &filename)
151151
if (xmlReader.name() == QString(CppcheckXml::CheckLevelExhaustiveElementName))
152152
mCheckLevel = CheckLevel::exhaustive;
153153

154+
if (xmlReader.name() == QString(CppcheckXml::CheckLevelNormalElementName))
155+
mCheckLevel = CheckLevel::normal;
156+
157+
if (xmlReader.name() == QString(CppcheckXml::CheckLevelReducedElementName))
158+
mCheckLevel = CheckLevel::reduced;
159+
154160
// Find include directory from inside project element
155161
if (xmlReader.name() == QString(CppcheckXml::IncludeDirElementName))
156162
readIncludeDirs(xmlReader);
@@ -804,11 +810,6 @@ void ProjectFile::setCheckLevel(ProjectFile::CheckLevel checkLevel)
804810
mCheckLevel = checkLevel;
805811
}
806812

807-
bool ProjectFile::isCheckLevelExhaustive() const
808-
{
809-
return mCheckLevel == CheckLevel::exhaustive;
810-
}
811-
812813
void ProjectFile::setWarningTags(std::size_t hash, const QString& tags)
813814
{
814815
if (tags.isEmpty())
@@ -1016,6 +1017,11 @@ bool ProjectFile::write(const QString &filename)
10161017
xmlWriter.writeEndElement();
10171018
}
10181019

1020+
if (mCheckLevel == CheckLevel::reduced) {
1021+
xmlWriter.writeStartElement(CppcheckXml::CheckLevelReducedElementName);
1022+
xmlWriter.writeEndElement();
1023+
}
1024+
10191025
// Cppcheck Premium
10201026
if (mBughunting) {
10211027
xmlWriter.writeStartElement(CppcheckXml::BughuntingElementName);

gui/projectfile.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class ProjectFile : public QObject {
5555
}
5656

5757
enum class CheckLevel : std::uint8_t {
58+
reduced,
5859
normal,
5960
exhaustive
6061
};
@@ -352,7 +353,9 @@ class ProjectFile : public QObject {
352353

353354
/** CheckLevel: normal/exhaustive */
354355
void setCheckLevel(CheckLevel checkLevel);
355-
bool isCheckLevelExhaustive() const;
356+
CheckLevel getCheckLevel() const {
357+
return mCheckLevel;
358+
}
356359

357360
/**
358361
* @brief Set tags.

gui/projectfile.ui

+9-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>940</width>
10-
<height>701</height>
10+
<height>704</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -17,7 +17,7 @@
1717
<item>
1818
<widget class="QTabWidget" name="tabWidget">
1919
<property name="currentIndex">
20-
<number>0</number>
20+
<number>2</number>
2121
</property>
2222
<widget class="QWidget" name="mTabPathsAndDefines">
2323
<attribute name="title">
@@ -458,6 +458,13 @@
458458
<string>Check level</string>
459459
</property>
460460
<layout class="QVBoxLayout" name="verticalLayout_18">
461+
<item>
462+
<widget class="QRadioButton" name="mCheckLevelReduced">
463+
<property name="text">
464+
<string>Reduced -- meant for usage where developer wants results directly. Limited and faster analysis with fewer results.</string>
465+
</property>
466+
</widget>
467+
</item>
461468
<item>
462469
<widget class="QRadioButton" name="mCheckLevelNormal">
463470
<property name="text">

gui/projectfiledialog.cpp

+16-4
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,17 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile)
310310
else
311311
item->setCheckState(Qt::Unchecked);
312312
}
313-
if (projectFile->isCheckLevelExhaustive())
314-
mUI->mCheckLevelExhaustive->setChecked(true);
315-
else
313+
switch (projectFile->getCheckLevel()) {
314+
case ProjectFile::CheckLevel::reduced:
315+
mUI->mCheckLevelReduced->setChecked(true);
316+
break;
317+
case ProjectFile::CheckLevel::normal:
316318
mUI->mCheckLevelNormal->setChecked(true);
319+
break;
320+
case ProjectFile::CheckLevel::exhaustive:
321+
mUI->mCheckLevelExhaustive->setChecked(true);
322+
break;
323+
};
317324
mUI->mCheckHeaders->setChecked(projectFile->getCheckHeaders());
318325
mUI->mCheckUnusedTemplates->setChecked(projectFile->getCheckUnusedTemplates());
319326
mUI->mInlineSuppressions->setChecked(projectFile->getInlineSuppression());
@@ -460,7 +467,12 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
460467
projectFile->setCheckPaths(getCheckPaths());
461468
projectFile->setExcludedPaths(getExcludedPaths());
462469
projectFile->setLibraries(getLibraries());
463-
projectFile->setCheckLevel(mUI->mCheckLevelExhaustive->isChecked() ? ProjectFile::CheckLevel::exhaustive : ProjectFile::CheckLevel::normal);
470+
if (mUI->mCheckLevelReduced->isChecked())
471+
projectFile->setCheckLevel(ProjectFile::CheckLevel::reduced);
472+
else if (mUI->mCheckLevelNormal->isChecked())
473+
projectFile->setCheckLevel(ProjectFile::CheckLevel::normal);
474+
else // if (mUI->mCheckLevelExhaustive->isChecked())
475+
projectFile->setCheckLevel(ProjectFile::CheckLevel::exhaustive);
464476
projectFile->clangParser = mUI->mBtnClangParser->isChecked();
465477
projectFile->safeChecks.classes = mUI->mBtnSafeClasses->isChecked();
466478
if (mUI->mComboBoxPlatform->currentText().endsWith(".xml"))

lib/importproject.h

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ namespace CppcheckXml {
168168
static constexpr char WarningElementName[] = "warning";
169169
static constexpr char HashAttributeName[] = "hash";
170170
static constexpr char CheckLevelExhaustiveElementName[] = "check-level-exhaustive";
171+
static constexpr char CheckLevelNormalElementName[] = "check-level-normal";
172+
static constexpr char CheckLevelReducedElementName[] = "check-level-reduced";
171173
static constexpr char CheckHeadersElementName[] = "check-headers";
172174
static constexpr char CheckUnusedTemplatesElementName[] = "check-unused-templates";
173175
static constexpr char MaxCtuDepthElementName[] = "max-ctu-depth";

man/manual.md

+6
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,12 @@ Example usage:
10861086

10871087
# Check Level
10881088

1089+
## Reduced
1090+
1091+
The "reduced" check level performs a limited data flow analysis. If developers
1092+
want to run cppcheck directly during development and require faster results
1093+
than "normal" provides then this reduced checking can be an option.
1094+
10891095
## Normal
10901096

10911097
The "normal" check level is chosen by default. Our aim is that this checking level will provide an effective checking in "reasonable" time.

releasenotes.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ GUI:
1010
-
1111

1212
Changed interface:
13-
-
13+
-Added `reduced` check level. It can be activated with `--check-level=reduced`. You get faster analysis
14+
but some fewer results. The motivation is to be able to make analysis time "acceptable" for direct usage.
1415

1516
Deprecations:
1617
-

0 commit comments

Comments
 (0)