Skip to content

Commit ec33a06

Browse files
authored
Fix #13540 (Premium: Update checkers mapping: constStatement = misra c 2.2) (danmar#7197)
1 parent a219774 commit ec33a06

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

lib/checkersidmapping.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ std::vector<checkers::IdMapping> checkers::idMappingAutosar{
5252
{"a8-4-2", "missingReturn"},
5353
{"a8-5-0", "uninitdata"},
5454
{"m9-3-3", "functionConst,functionStatic"},
55+
{"m10-2-1", "duplInheritedMember"},
5556
{"a12-1-1", "uninitMemberVar"},
5657
{"m12-1-1", "virtualCallInConstructor"},
5758
{"a12-1-4", "noExplicitConstructor"},
@@ -120,7 +121,7 @@ std::vector<checkers::IdMapping> checkers::idMappingMisraC{
120121
{"1.1", "syntaxError"},
121122
{"1.3", "error"},
122123
{"2.1", "duplicateBreak,unreachableCode"},
123-
{"2.2", "redundantCondition,redundantAssignment,redundantAssignInSwitch,unreadVariable"},
124+
{"2.2", "constStatement,redundantCondition,redundantAssignment,redundantAssignInSwitch,unreadVariable"},
124125
{"2.6", "unusedLabel"},
125126
{"2.8", "unusedVariable"},
126127
{"5.3", "shadowVariable"},
@@ -167,6 +168,7 @@ std::vector<checkers::IdMapping> checkers::idMappingMisraCpp2008{
167168
{"5-2-4", "cstyleCast"},
168169
{"5-3-4", "sizeofFunctionCall"},
169170
{"5-8-1", "shiftTooManyBits"},
171+
{"6-6-5", "missingReturn"},
170172
{"7-1-1", "constVariable,constParameter"},
171173
{"7-1-2", "constParameter"},
172174
{"7-5-1", "autoVariables,returnReference,returnTempReference"},
@@ -175,6 +177,7 @@ std::vector<checkers::IdMapping> checkers::idMappingMisraCpp2008{
175177
{"8-4-3", "missingReturn"},
176178
{"8-5-1", "uninitvar,uninitdata,uninitStructMember,uninitMemberVar,uninitMemberVarPrivate,uninitDerivedMemberVar,uninitDerivedMemberVarPrivate"},
177179
{"9-3-3", "functionConst,functionStatic"},
180+
{"10-2-1", "duplInheritedMember"},
178181
{"12-1-1", "virtualCallInConstructor"},
179182
{"12-1-3", "noExplicitConstructor"},
180183
{"15-3-1", "exceptThrowInDestructor"},
@@ -190,6 +193,7 @@ std::vector<checkers::IdMapping> checkers::idMappingMisraCpp2023{
190193
{"Dir 0.3.2", "invalidFunctionArg,invalidFunctionArgBool,invalidFunctionArgStr"},
191194
{"4.1.3", "error"},
192195
{"4.6.1", "unknownEvaluationOrder"},
196+
{"5.10.1", "syntaxError"},
193197
{"6.2.1", "ctuOneDefinitionRuleViolation"},
194198
{"6.4.1", "shadowVariable"},
195199
{"6.8.1", "danglingLifetime"},
@@ -202,6 +206,7 @@ std::vector<checkers::IdMapping> checkers::idMappingMisraCpp2023{
202206
{"10.1.1", "constParameter,constParameterReference"},
203207
{"11.6.2", "uninitvar"},
204208
{"15.1.1", "virtualCallInConstructor"},
209+
{"15.1.3", "noExplicitConstructor"},
205210
{"15.1.4", "uninitMemberVar"},
206211
{"Dir 15.8.1", "operatorEqToSelf"},
207212
{"19.3.5", "preprocessorErrorDirective"},

lib/checkother.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2113,7 +2113,8 @@ static bool isConstTop(const Token *tok)
21132113

21142114
void CheckOther::checkIncompleteStatement()
21152115
{
2116-
if (!mSettings->severity.isEnabled(Severity::warning))
2116+
if (!mSettings->severity.isEnabled(Severity::warning) &&
2117+
!mSettings->isPremiumEnabled("constStatement"))
21172118
return;
21182119

21192120
logChecker("CheckOther::checkIncompleteStatement"); // warning
@@ -2165,7 +2166,7 @@ void CheckOther::checkIncompleteStatement()
21652166
if (tok->isCpp() && tok->str() == "&" && !(tok->astOperand1() && tok->astOperand1()->valueType() && tok->astOperand1()->valueType()->isIntegral()))
21662167
// Possible archive
21672168
continue;
2168-
const bool inconclusive = tok->isConstOp();
2169+
const bool inconclusive = tok->isConstOp() && !mSettings->isPremiumEnabled("constStatement");
21692170
if (mSettings->certainty.isEnabled(Certainty::inconclusive) || !inconclusive)
21702171
constStatementError(tok, tok->isNumber() ? "numeric" : "string", inconclusive);
21712172
}

lib/settings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,7 @@ static const std::set<std::string> misrac2012Checkers{
465465
"comparePointers",
466466
"compareValueOutOfTypeRangeError",
467467
"constParameterPointer",
468+
"constStatement",
468469
"danglingLifetime",
469470
"danglingTemporaryLifetime",
470471
"duplicateBreak",
@@ -507,6 +508,7 @@ static const std::set<std::string> misrac2023Checkers{
507508
"comparePointers",
508509
"compareValueOutOfTypeRangeError",
509510
"constParameterPointer",
511+
"constStatement",
510512
"danglingLifetime",
511513
"danglingTemporaryLifetime",
512514
"duplicateBreak",

0 commit comments

Comments
 (0)