* Fix regressions with static variables and multiple assignments * Fix test * Fix test cases
This commit is contained in:
parent
757287b13c
commit
c3506b5186
|
@ -729,7 +729,7 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const
|
||||||
variables.addVar(&*i, type, true);
|
variables.addVar(&*i, type, true);
|
||||||
break;
|
break;
|
||||||
} else if (defValTok->str() == ";" || defValTok->str() == "," || defValTok->str() == ")") {
|
} else if (defValTok->str() == ";" || defValTok->str() == "," || defValTok->str() == ")") {
|
||||||
variables.addVar(&*i, type, i->isStatic());
|
variables.addVar(&*i, type, i->isStatic() && i->scope()->type != Scope::eFunction);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1203,7 +1203,7 @@ void CheckUnusedVar::checkFunctionVariableUsage()
|
||||||
continue;
|
continue;
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
}
|
}
|
||||||
if (tok->astParent() && tok->str() != "(") {
|
if (tok->astParent() && !tok->astParent()->isAssignmentOp() && tok->str() != "(") {
|
||||||
const Token *parent = tok->astParent();
|
const Token *parent = tok->astParent();
|
||||||
while (Token::Match(parent, "%oror%|%comp%|!|&&"))
|
while (Token::Match(parent, "%oror%|%comp%|!|&&"))
|
||||||
parent = parent->astParent();
|
parent = parent->astParent();
|
||||||
|
|
|
@ -2578,7 +2578,10 @@ private:
|
||||||
" int a, b, c;\n"
|
" int a, b, c;\n"
|
||||||
" a = b = c = f();\n"
|
" a = b = c = f();\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (style) Variable 'a' is assigned a value that is never used.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (style) Variable 'a' is assigned a value that is never used.\n"
|
||||||
|
"[test.cpp:4]: (style) Variable 'b' is assigned a value that is never used.\n"
|
||||||
|
"[test.cpp:4]: (style) Variable 'c' is assigned a value that is never used.\n",
|
||||||
|
errout.str());
|
||||||
|
|
||||||
functionVariableUsage("int * foo()\n"
|
functionVariableUsage("int * foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -2886,9 +2889,7 @@ private:
|
||||||
" a = b[c] = 0;\n"
|
" a = b[c] = 0;\n"
|
||||||
" return a;\n"
|
" return a;\n"
|
||||||
"}");
|
"}");
|
||||||
TODO_ASSERT_EQUALS("[test.cpp:5]: (style) Variable 'b' is assigned a value that is never used.\n",
|
ASSERT_EQUALS("[test.cpp:5]: (style) Variable 'b[c]' is assigned a value that is never used.\n", errout.str());
|
||||||
"",
|
|
||||||
errout.str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void localvar24() { // ticket #1803
|
void localvar24() { // ticket #1803
|
||||||
|
@ -2927,7 +2928,7 @@ private:
|
||||||
" int param = 1;\n"
|
" int param = 1;\n"
|
||||||
" ptr->param = param++;\n"
|
" ptr->param = param++;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (style) Variable 'param' is assigned a value that is never used.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void localvar28() { // ticket #2205
|
void localvar28() { // ticket #2205
|
||||||
|
@ -5212,8 +5213,15 @@ private:
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" static int i;\n"
|
" static int i;\n"
|
||||||
|
" static const int ci;\n"
|
||||||
|
" static std::string s;\n"
|
||||||
|
" static const std::string cs;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (style) Unused variable: i\n"
|
||||||
|
"[test.cpp:4]: (style) Unused variable: ci\n"
|
||||||
|
"[test.cpp:5]: (style) Unused variable: s\n"
|
||||||
|
"[test.cpp:6]: (style) Unused variable: cs\n",
|
||||||
|
errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
Loading…
Reference in New Issue