diff --git a/lib/checkunusedvar.cpp b/lib/checkunusedvar.cpp index a68a94eec..a0ba91cec 100644 --- a/lib/checkunusedvar.cpp +++ b/lib/checkunusedvar.cpp @@ -1183,6 +1183,9 @@ void CheckUnusedVar::checkFunctionVariableUsage() if (!isAssignment && !isInitialization && !isIncrementOrDecrement) continue; + if (isInitialization && Token::Match(tok, "%var% { }")) // don't warn for trivial initialization + continue; + if (isIncrementOrDecrement && tok->astParent() && precedes(tok, tok->astOperand1())) continue; diff --git a/test/testunusedvar.cpp b/test/testunusedvar.cpp index 9a93f9b0a..0000d7892 100644 --- a/test/testunusedvar.cpp +++ b/test/testunusedvar.cpp @@ -3040,6 +3040,19 @@ private: "}"); ASSERT_EQUALS("", errout.str()); + functionVariableUsage("void f(bool b, bool c, double& r) {\n" + " double d{};\n" + " if (b) {\n" + " d = g();\n" + " r += d;\n" + " }\n" + " if (c) {\n" + " d = h();\n" + " r += d;\n" + " }\n" + "}\n"); + ASSERT_EQUALS("", errout.str()); + functionVariableUsage("int func() {\n" " std::mutex m;\n" " std::unique_lock l{ m };\n"