Fixed #4180 (false positive: (style) Variable is assigned a value that is never used (inside loop))
This commit is contained in:
parent
4e92f8dfcd
commit
f23ce8d254
|
@ -649,7 +649,7 @@ void CheckUnusedVar::checkFunctionVariableUsage_iterateScopes(const Scope* const
|
||||||
|
|
||||||
// Check variable usage
|
// Check variable usage
|
||||||
for (const Token *tok = scope->classDef->next(); tok && tok != scope->classEnd; tok = tok->next()) {
|
for (const Token *tok = scope->classDef->next(); tok && tok != scope->classEnd; tok = tok->next()) {
|
||||||
if (tok->str() == "for" || tok->str() == "while") {
|
if (tok->str() == "for" || tok->str() == "while" || tok->str() == "do") {
|
||||||
for (std::list<Scope*>::const_iterator i = scope->nestedList.begin(); i != scope->nestedList.end(); ++i) {
|
for (std::list<Scope*>::const_iterator i = scope->nestedList.begin(); i != scope->nestedList.end(); ++i) {
|
||||||
if ((*i)->classDef == tok) { // Find associated scope
|
if ((*i)->classDef == tok) { // Find associated scope
|
||||||
checkFunctionVariableUsage_iterateScopes(*i, variables, true, usedVariables); // Scan child scope
|
checkFunctionVariableUsage_iterateScopes(*i, variables, true, usedVariables); // Scan child scope
|
||||||
|
|
|
@ -625,6 +625,18 @@ private:
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'd' is assigned a value that is never used.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'd' is assigned a value that is never used.\n", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int i = 0,code=10,d=10;\n"
|
||||||
|
" for(i = 0; i < 10; i++) {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" g(d);\n"
|
||||||
|
" d = code;\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" int code=10;\n"
|
" int code=10;\n"
|
||||||
|
@ -646,6 +658,51 @@ private:
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'd' is assigned a value that is never used.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'd' is assigned a value that is never used.\n", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int code=10,d=10;\n"
|
||||||
|
" while(code < 20) {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" g(d);\n"
|
||||||
|
" d += code;\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int code=10;\n"
|
||||||
|
" do {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" } while(code < 20)\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int code=10,d=10;\n"
|
||||||
|
" do {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" d += code;\n"
|
||||||
|
" } while(code < 20)\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("[test.cpp:7]: (style) Variable 'd' is assigned a value that is never used.\n", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int code=10,d=10;\n"
|
||||||
|
" do {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" g(d);\n"
|
||||||
|
" d += code;\n"
|
||||||
|
" } while(code < 20)\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
functionVariableUsage("void foo()\n"
|
functionVariableUsage("void foo()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" int code=10;\n"
|
" int code=10;\n"
|
||||||
|
@ -681,6 +738,18 @@ private:
|
||||||
" }\n"
|
" }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
functionVariableUsage("void foo()\n"
|
||||||
|
"{\n"
|
||||||
|
" int code=10;\n"
|
||||||
|
" do {\n"
|
||||||
|
" if(true) {\n"
|
||||||
|
" std::cout<<code<<std::endl;\n"
|
||||||
|
" code += 2;\n"
|
||||||
|
" }\n"
|
||||||
|
" } while(code < 20)\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void localvar2() {
|
void localvar2() {
|
||||||
|
|
Loading…
Reference in New Issue