Fixed #1989 (false positive: Variable 'Aux13' is assigned a value that is never used)
This commit is contained in:
parent
b1bf201a8a
commit
71453871d4
|
@ -2020,7 +2020,9 @@ bool Tokenizer::tokenize(std::istream &code, const char FileName[], const std::s
|
||||||
// "if (p or q)" => "if (p || q)"
|
// "if (p or q)" => "if (p || q)"
|
||||||
while (simplifyLogicalOperators()) { }
|
while (simplifyLogicalOperators()) { }
|
||||||
|
|
||||||
//updateClassList();
|
// Change initialisation of variable to assignment
|
||||||
|
simplifyInitVar();
|
||||||
|
|
||||||
setVarId();
|
setVarId();
|
||||||
|
|
||||||
// Change initialisation of variable to assignment
|
// Change initialisation of variable to assignment
|
||||||
|
@ -5571,6 +5573,7 @@ Token * Tokenizer::initVar(Token * tok)
|
||||||
// insert '; var ='
|
// insert '; var ='
|
||||||
tok->insertToken(";");
|
tok->insertToken(";");
|
||||||
tok->next()->insertToken(tok->str());
|
tok->next()->insertToken(tok->str());
|
||||||
|
tok->tokAt(2)->varId(tok->varId());
|
||||||
tok = tok->tokAt(2);
|
tok = tok->tokAt(2);
|
||||||
tok->insertToken("=");
|
tok->insertToken("=");
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ private:
|
||||||
TEST_CASE(tokenize5);
|
TEST_CASE(tokenize5);
|
||||||
TEST_CASE(tokenize6);
|
TEST_CASE(tokenize6);
|
||||||
TEST_CASE(tokenize7);
|
TEST_CASE(tokenize7);
|
||||||
|
TEST_CASE(tokenize8);
|
||||||
|
|
||||||
// array access. replace "*(p+1)" => "p[1]"
|
// array access. replace "*(p+1)" => "p[1]"
|
||||||
TEST_CASE(tokenize6);
|
TEST_CASE(tokenize6);
|
||||||
|
@ -381,6 +382,20 @@ private:
|
||||||
tokenizeAndStringify(code.c_str(), false));
|
tokenizeAndStringify(code.c_str(), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tokenize8()
|
||||||
|
{
|
||||||
|
const std::string code = "void f() {\n"
|
||||||
|
" int x1(g());\n"
|
||||||
|
" int x2(x1);\n"
|
||||||
|
"}\n";
|
||||||
|
ASSERT_EQUALS("\n\n##file 0\n"
|
||||||
|
"1: void f ( ) {\n"
|
||||||
|
"2: int x1@1 ; x1@1 = g ( ) ;\n"
|
||||||
|
"3: int x2@2 ; x2@2 = x1@1 ;\n"
|
||||||
|
"4: }\n",
|
||||||
|
tokenizeDebugListing(code.c_str(), false));
|
||||||
|
}
|
||||||
|
|
||||||
void wrong_syntax()
|
void wrong_syntax()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
|
|
@ -349,7 +349,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
" int i(0);\n"
|
" int i(0);\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (style) Unused variable: i\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (style) Variable 'i' is assigned a value that is never used\n", errout.str());
|
||||||
|
|
||||||
// if a is undefined then Cppcheck can't determine if "int i(a)" is a
|
// if a is undefined then Cppcheck can't determine if "int i(a)" is a
|
||||||
// * variable declaration
|
// * variable declaration
|
||||||
|
@ -365,7 +365,7 @@ private:
|
||||||
" int j = 0;\n"
|
" int j = 0;\n"
|
||||||
" int i(j);\n"
|
" int i(j);\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (style) Unused variable: i\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (style) Variable 'i' is assigned a value that is never used\n", errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -404,14 +404,14 @@ private:
|
||||||
" int * j = 0;\n"
|
" int * j = 0;\n"
|
||||||
" int * i(j);\n"
|
" int * i(j);\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (style) Unused variable: i\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (style) Variable 'i' is assigned a value that is never used\n", errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" int * j = 0;\n"
|
" int * j = 0;\n"
|
||||||
" const int * i(j);\n"
|
" const int * i(j);\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (style) Unused variable: i\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (style) Variable 'i' is assigned a value that is never used\n", errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
|
Loading…
Reference in New Issue