Refactorization: Removed redundant %any% patterns.

This commit is contained in:
PKEuS 2015-12-24 14:40:48 +01:00
parent 0052896c41
commit 940d569980
6 changed files with 11 additions and 11 deletions

View File

@ -819,7 +819,7 @@ void CheckClass::initializationListUsage()
break; break;
if (Token::Match(tok, "try|do {")) if (Token::Match(tok, "try|do {"))
break; break;
if (Token::Match(tok, "%var% = %any%") && tok->strAt(-1) != "*") { if (Token::Match(tok, "%var% =") && tok->strAt(-1) != "*") {
const Variable* var = tok->variable(); const Variable* var = tok->variable();
if (var && var->scope() == owner && !var->isStatic()) { if (var && var->scope() == owner && !var->isStatic()) {
if (var->isPointer() || var->isReference() || (!var->type() && !var->isStlStringType() && !(Token::Match(var->typeStartToken(), "std :: %type% <") && !Token::simpleMatch(var->typeStartToken()->linkAt(3), "> ::")))) if (var->isPointer() || var->isReference() || (!var->type() && !var->isStlStringType() && !(Token::Match(var->typeStartToken(), "std :: %type% <") && !Token::simpleMatch(var->typeStartToken()->linkAt(3), "> ::"))))
@ -991,7 +991,7 @@ void CheckClass::checkMemset()
for (std::size_t i = 0; i < functions; ++i) { for (std::size_t i = 0; i < functions; ++i) {
const Scope * scope = symbolDatabase->functionScopes[i]; const Scope * scope = symbolDatabase->functionScopes[i];
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) { for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
if (Token::Match(tok, "memset|memcpy|memmove ( %any%")) { if (Token::Match(tok, "memset|memcpy|memmove (")) {
const Token* arg1 = tok->tokAt(2); const Token* arg1 = tok->tokAt(2);
const Token* arg3 = arg1->nextArgument(); const Token* arg3 = arg1->nextArgument();
if (arg3) if (arg3)

View File

@ -222,7 +222,7 @@ void CheckFunctions::checkMathFunctions()
mathfunctionCallWarning(tok, 2); mathfunctionCallWarning(tok, 2);
} }
// fmod ( x , y) If y is zero, then either a range error will occur or the function will return zero (implementation-defined). // fmod ( x , y) If y is zero, then either a range error will occur or the function will return zero (implementation-defined).
else if (Token::Match(tok, "fmod|fmodf|fmodl ( %any%")) { else if (Token::Match(tok, "fmod|fmodf|fmodl (")) {
const Token* nextArg = tok->tokAt(2)->nextArgument(); const Token* nextArg = tok->tokAt(2)->nextArgument();
if (nextArg && nextArg->isNumber() && MathLib::isNullValue(nextArg->str())) if (nextArg && nextArg->isNumber() && MathLib::isNullValue(nextArg->str()))
mathfunctionCallWarning(tok, 2); mathfunctionCallWarning(tok, 2);

View File

@ -498,7 +498,7 @@ void CheckIO::checkWrongPrintfScanfArguments()
bool scanf_s = false; bool scanf_s = false;
int formatStringArgNo = -1; int formatStringArgNo = -1;
if (Token::Match(tok->next(), "( %any%") && _settings->library.formatstr_function(tok->str())) { if (tok->strAt(1) == "(" && _settings->library.formatstr_function(tok->str())) {
const std::map<int, Library::ArgumentChecks>& argumentChecks = _settings->library.argumentChecks.at(tok->str()); const std::map<int, Library::ArgumentChecks>& argumentChecks = _settings->library.argumentChecks.at(tok->str());
for (std::map<int, Library::ArgumentChecks>::const_iterator i = argumentChecks.cbegin(); i != argumentChecks.cend(); ++i) { for (std::map<int, Library::ArgumentChecks>::const_iterator i = argumentChecks.cbegin(); i != argumentChecks.cend(); ++i) {
if (i->second.formatstr) { if (i->second.formatstr) {

View File

@ -2094,7 +2094,7 @@ void CheckMemoryLeakInFunction::checkReallocUsage()
// Search for the "var = realloc(var, 100" pattern within this function // Search for the "var = realloc(var, 100" pattern within this function
for (const Token *tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { for (const Token *tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
if (tok->varId() > 0 && if (tok->varId() > 0 &&
Token::Match(tok, "%name% = realloc|g_try_realloc ( %name% , %any%") && Token::Match(tok, "%name% = realloc|g_try_realloc ( %name% ,") &&
tok->varId() == tok->tokAt(4)->varId() && tok->varId() == tok->tokAt(4)->varId() &&
isNoArgument(symbolDatabase, tok->varId())) { isNoArgument(symbolDatabase, tok->varId())) {
// Check that another copy of the pointer wasn't saved earlier in the function // Check that another copy of the pointer wasn't saved earlier in the function
@ -2113,7 +2113,7 @@ void CheckMemoryLeakInFunction::checkReallocUsage()
memleakUponReallocFailureError(tok, tok->str()); memleakUponReallocFailureError(tok, tok->str());
} else if (tok->next()->varId() > 0 && } else if (tok->next()->varId() > 0 &&
(Token::Match(tok, "* %name% = realloc|g_try_realloc ( * %name% , %any%") && (Token::Match(tok, "* %name% = realloc|g_try_realloc ( * %name% ,") &&
tok->next()->varId() == tok->tokAt(6)->varId()) && tok->next()->varId() == tok->tokAt(6)->varId()) &&
isNoArgument(symbolDatabase, tok->next()->varId())) { isNoArgument(symbolDatabase, tok->next()->varId())) {
// Check that another copy of the pointer wasn't saved earlier in the function // Check that another copy of the pointer wasn't saved earlier in the function

View File

@ -921,7 +921,7 @@ void CheckOther::checkSuspiciousEqualityComparison()
// for (i = 0; i < 10; i == a) // for (i = 0; i < 10; i == a)
if (Token::Match(openParen->next(), "%name% ==")) if (Token::Match(openParen->next(), "%name% =="))
suspiciousEqualityComparisonError(openParen->tokAt(2)); suspiciousEqualityComparisonError(openParen->tokAt(2));
if (Token::Match(closeParen->tokAt(-2), "== %any%")) if (closeParen->strAt(-2) == "==")
suspiciousEqualityComparisonError(closeParen->tokAt(-2)); suspiciousEqualityComparisonError(closeParen->tokAt(-2));
// Skip over for() loop conditions because "for (;running==1;)" // Skip over for() loop conditions because "for (;running==1;)"
@ -1292,7 +1292,7 @@ bool CheckOther::checkInnerScope(const Token *tok, const Variable* var, bool& us
if (Token::Match(tok, "& %varid%", var->declarationId())) // Taking address of variable if (Token::Match(tok, "& %varid%", var->declarationId())) // Taking address of variable
return false; return false;
if (Token::Match(tok, "%varid% = %any%", var->declarationId())) if (Token::Match(tok, "%varid% =", var->declarationId()))
bFirstAssignment = true; bFirstAssignment = true;
if (!bFirstAssignment && Token::Match(tok, "* %varid%", var->declarationId())) // dereferencing means access to previous content if (!bFirstAssignment && Token::Match(tok, "* %varid%", var->declarationId())) // dereferencing means access to previous content
@ -1793,8 +1793,8 @@ void CheckOther::checkInvalidFree()
// If a variable that was previously assigned a newly-allocated memory location is // If a variable that was previously assigned a newly-allocated memory location is
// added or subtracted from when used to free the memory, report an error. // added or subtracted from when used to free the memory, report an error.
else if (Token::Match(tok, "free|g_free|delete ( %any% +|- %any%") || else if (Token::Match(tok, "free|g_free|delete ( %any% +|-") ||
Token::Match(tok, "delete [ ] ( %any% +|- %any%") || Token::Match(tok, "delete [ ] ( %any% +|-") ||
Token::Match(tok, "delete %any% +|- %any%")) { Token::Match(tok, "delete %any% +|- %any%")) {
const int varIndex = tok->strAt(1) == "(" ? 2 : const int varIndex = tok->strAt(1) == "(" ? 2 :

View File

@ -193,7 +193,7 @@ void CheckStl::iterators()
} }
// Reassign the iterator // Reassign the iterator
else if (Token::Match(tok2, "%varid% = %any%", iteratorId)) { else if (Token::Match(tok2, "%varid% =", iteratorId)) {
// Assume that the iterator becomes valid. // Assume that the iterator becomes valid.
// TODO: add checking that checks if the iterator becomes valid or not // TODO: add checking that checks if the iterator becomes valid or not
validatingToken = Token::findmatch(tok2->tokAt(2), "[;)]"); validatingToken = Token::findmatch(tok2->tokAt(2), "[;)]");