Rephraze /Same/Identical/

This commit is contained in:
Daniel Marjamäki 2017-09-08 12:41:33 +02:00
parent 97125acabd
commit 58db814d72
3 changed files with 13 additions and 13 deletions

View File

@ -580,7 +580,7 @@ void CheckCondition::multiCondition2()
tokens2.push(secondCondition->astOperand2()); tokens2.push(secondCondition->astOperand2());
} else if (isSameExpression(_tokenizer->isCPP(), true, cond1, secondCondition, _settings->library, true)) { } else if (isSameExpression(_tokenizer->isCPP(), true, cond1, secondCondition, _settings->library, true)) {
if (!isAliased(vars)) if (!isAliased(vars))
sameConditionAfterEarlyExitError(cond1, secondCondition); identicalConditionAfterEarlyExitError(cond1, secondCondition);
} }
} }
} }
@ -663,13 +663,13 @@ void CheckCondition::oppositeInnerConditionError(const Token *tok1, const Token*
reportError(errorPath, Severity::warning, "oppositeInnerCondition", msg, CWE398, false); reportError(errorPath, Severity::warning, "oppositeInnerCondition", msg, CWE398, false);
} }
void CheckCondition::sameConditionAfterEarlyExitError(const Token *cond1, const Token* cond2) void CheckCondition::identicalConditionAfterEarlyExitError(const Token *cond1, const Token* cond2)
{ {
const std::string cond(cond1 ? cond1->expressionString() : "x"); const std::string cond(cond1 ? cond1->expressionString() : "x");
ErrorPath errorPath; ErrorPath errorPath;
errorPath.push_back(ErrorPathItem(cond1, "first condition")); errorPath.push_back(ErrorPathItem(cond1, "first condition"));
errorPath.push_back(ErrorPathItem(cond2, "second condition")); errorPath.push_back(ErrorPathItem(cond2, "second condition"));
reportError(errorPath, Severity::warning, "sameConditionAfterEarlyExit", "Same condition '" + cond + "', second condition is always false", CWE398, false); reportError(errorPath, Severity::warning, "identicalConditionAfterEarlyExit", "Identical condition '" + cond + "', second condition is always false", CWE398, false);
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@ -129,7 +129,7 @@ private:
void oppositeInnerConditionError(const Token *tok1, const Token* tok2); void oppositeInnerConditionError(const Token *tok1, const Token* tok2);
void sameConditionAfterEarlyExitError(const Token *cond1, const Token *cond2); void identicalConditionAfterEarlyExitError(const Token *cond1, const Token *cond2);
void incorrectLogicOperatorError(const Token *tok, const std::string &condition, bool always, bool inconclusive); void incorrectLogicOperatorError(const Token *tok, const std::string &condition, bool always, bool inconclusive);
void redundantConditionError(const Token *tok, const std::string &text, bool inconclusive); void redundantConditionError(const Token *tok, const std::string &text, bool inconclusive);
@ -151,7 +151,7 @@ private:
c.multiConditionError(nullptr,1); c.multiConditionError(nullptr,1);
c.mismatchingBitAndError(nullptr, 0xf0, nullptr, 1); c.mismatchingBitAndError(nullptr, 0xf0, nullptr, 1);
c.oppositeInnerConditionError(nullptr, nullptr); c.oppositeInnerConditionError(nullptr, nullptr);
c.sameConditionAfterEarlyExitError(nullptr, nullptr); c.identicalConditionAfterEarlyExitError(nullptr, nullptr);
c.incorrectLogicOperatorError(nullptr, "foo > 3 && foo < 4", true, false); c.incorrectLogicOperatorError(nullptr, "foo > 3 && foo < 4", true, false);
c.redundantConditionError(nullptr, "If x > 11 the condition x > 10 is always true.", false); c.redundantConditionError(nullptr, "If x > 11 the condition x > 10 is always true.", false);
c.moduloAlwaysTrueFalseError(nullptr, "1"); c.moduloAlwaysTrueFalseError(nullptr, "1");
@ -172,7 +172,7 @@ private:
"- Detect matching 'if' and 'else if' conditions\n" "- Detect matching 'if' and 'else if' conditions\n"
"- Mismatching bitand (a &= 0xf0; a &= 1; => a = 0)\n" "- Mismatching bitand (a &= 0xf0; a &= 1; => a = 0)\n"
"- Opposite inner condition is always false\n" "- Opposite inner condition is always false\n"
"- Same condition after early exit is always false\n" "- Identical condition after early exit is always false\n"
"- Condition that is always true/false\n" "- Condition that is always true/false\n"
"- Mutual exclusion over || always evaluating to true\n" "- Mutual exclusion over || always evaluating to true\n"
"- Comparisons of modulo results that are always true/false.\n" "- Comparisons of modulo results that are always true/false.\n"

View File

@ -1770,40 +1770,40 @@ private:
" if (x > 100) { return; }\n" " if (x > 100) { return; }\n"
" if (x > 100) {}\n" " if (x > 100) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Same condition 'x>100', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Identical condition 'x>100', second condition is always false\n", errout.str());
check("void f(int x) {\n" check("void f(int x) {\n"
" if (x > 100) { return; }\n" " if (x > 100) { return; }\n"
" if (x > 100 || y > 100) {}\n" " if (x > 100 || y > 100) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Same condition 'x>100', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Identical condition 'x>100', second condition is always false\n", errout.str());
check("void f(int x) {\n" check("void f(int x) {\n"
" if (x > 100) { return; }\n" " if (x > 100) { return; }\n"
" if (x > 100 && y > 100) {}\n" " if (x > 100 && y > 100) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Same condition 'x>100', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:3]: (warning) Identical condition 'x>100', second condition is always false\n", errout.str());
check("void f(int x) {\n" check("void f(int x) {\n"
" if (x > 100) { return; }\n" " if (x > 100) { return; }\n"
" if (abc) {}\n" " if (abc) {}\n"
" if (x > 100) {}\n" " if (x > 100) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Same condition 'x>100', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Identical condition 'x>100', second condition is always false\n", errout.str());
check("void f(int x) {\n" check("void f(int x) {\n"
" if (x > 100) { return; }\n" " if (x > 100) { return; }\n"
" while (abc) { y = x; }\n" " while (abc) { y = x; }\n"
" if (x > 100) {}\n" " if (x > 100) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Same condition 'x>100', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Identical condition 'x>100', second condition is always false\n", errout.str());
check("void f(const int *i) {\n" check("void f(const int *i) {\n"
" if (!i) return;\n" " if (!i) return;\n"
" if (!num1tok) { *num1 = *num2; }\n" " if (!num1tok) { *num1 = *num2; }\n"
" if (!i) {}\n" " if (!i) {}\n"
"}"); "}");
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Same condition '!i', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Identical condition '!i', second condition is always false\n", errout.str());
check("void C::f(Tree &coreTree) {\n" // daca check("void C::f(Tree &coreTree) {\n" // daca
" if(!coreTree.build())\n" " if(!coreTree.build())\n"
@ -1820,7 +1820,7 @@ private:
" coreTree.dostuff();\n" " coreTree.dostuff();\n"
" if(!coreTree.build()) {}\n" " if(!coreTree.build()) {}\n"
"}\n"); "}\n");
ASSERT_EQUALS("[test.cpp:3] -> [test.cpp:6]: (warning) Same condition '!coreTree.build()', second condition is always false\n", errout.str()); ASSERT_EQUALS("[test.cpp:3] -> [test.cpp:6]: (warning) Identical condition '!coreTree.build()', second condition is always false\n", errout.str());
check("void f(int x) {\n" // daca: labplot check("void f(int x) {\n" // daca: labplot
" switch(type) {\n" " switch(type) {\n"