Adjust message text for signConversion for constant negative epxressions
This commit is contained in:
parent
746d024e3d
commit
1d3e39df7e
|
@ -182,19 +182,21 @@ void CheckType::checkSignConversion()
|
||||||
if (!tok1->getValueLE(-1,_settings))
|
if (!tok1->getValueLE(-1,_settings))
|
||||||
continue;
|
continue;
|
||||||
if (tok1->valueType() && tok1->valueType()->sign != ValueType::Sign::UNSIGNED)
|
if (tok1->valueType() && tok1->valueType()->sign != ValueType::Sign::UNSIGNED)
|
||||||
signConversionError(tok1);
|
signConversionError(tok1, tok1->isNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckType::signConversionError(const Token *tok)
|
void CheckType::signConversionError(const Token *tok, const bool constvalue)
|
||||||
{
|
{
|
||||||
const std::string varname(tok ? tok->str() : "var");
|
const std::string varname(tok ? tok->str() : "var");
|
||||||
|
|
||||||
reportError(tok,
|
reportError(tok,
|
||||||
Severity::warning,
|
Severity::warning,
|
||||||
"signConversion",
|
"signConversion",
|
||||||
|
(constvalue) ?
|
||||||
|
"Suspicious code: sign conversion of " + varname + " in calculation because '" + varname + "' has a negative value" :
|
||||||
"Suspicious code: sign conversion of " + varname + " in calculation, even though " + varname + " can have a negative value");
|
"Suspicious code: sign conversion of " + varname + " in calculation, even though " + varname + " can have a negative value");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ private:
|
||||||
// Error messages..
|
// Error messages..
|
||||||
void tooBigBitwiseShiftError(const Token *tok, int lhsbits, const ValueFlow::Value &rhsbits);
|
void tooBigBitwiseShiftError(const Token *tok, int lhsbits, const ValueFlow::Value &rhsbits);
|
||||||
void integerOverflowError(const Token *tok, const ValueFlow::Value &value);
|
void integerOverflowError(const Token *tok, const ValueFlow::Value &value);
|
||||||
void signConversionError(const Token *tok);
|
void signConversionError(const Token *tok, const bool constvalue);
|
||||||
void longCastAssignError(const Token *tok);
|
void longCastAssignError(const Token *tok);
|
||||||
void longCastReturnError(const Token *tok);
|
void longCastReturnError(const Token *tok);
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ private:
|
||||||
CheckType c(0, settings, errorLogger);
|
CheckType c(0, settings, errorLogger);
|
||||||
c.tooBigBitwiseShiftError(0, 32, ValueFlow::Value(64));
|
c.tooBigBitwiseShiftError(0, 32, ValueFlow::Value(64));
|
||||||
c.integerOverflowError(0, ValueFlow::Value(1LL<<32));
|
c.integerOverflowError(0, ValueFlow::Value(1LL<<32));
|
||||||
c.signConversionError(0);
|
c.signConversionError(0, false);
|
||||||
c.longCastAssignError(0);
|
c.longCastAssignError(0);
|
||||||
c.longCastReturnError(0);
|
c.longCastReturnError(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,6 +145,11 @@ private:
|
||||||
"}\n"
|
"}\n"
|
||||||
"void f2() { f1(-4); }");
|
"void f2() { f1(-4); }");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("size_t foo(size_t x) {\n"
|
||||||
|
" return -2 * x;\n"
|
||||||
|
"}");
|
||||||
|
ASSERT_EQUALS("[test.cpp:2]: (warning) Suspicious code: sign conversion of -2 in calculation because '-2' has a negative value\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void longCastAssign() {
|
void longCastAssign() {
|
||||||
|
|
Loading…
Reference in New Issue