From 2963522d5fd8df98e2a95f2c365b1963491b75c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 13 Jul 2018 16:40:15 +0200 Subject: [PATCH] Refactoring: Use ranged for loops --- lib/checksizeof.cpp | 12 +++--------- lib/checkstring.cpp | 40 +++++++++++++--------------------------- 2 files changed, 16 insertions(+), 36 deletions(-) diff --git a/lib/checksizeof.cpp b/lib/checksizeof.cpp index f989fa253..1ef1ec1cf 100644 --- a/lib/checksizeof.cpp +++ b/lib/checksizeof.cpp @@ -46,9 +46,7 @@ void CheckSizeof::checkSizeofForNumericParameter() return; const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (Token::Match(tok, "sizeof ( %num% )") || Token::Match(tok, "sizeof %num%")) { @@ -75,9 +73,7 @@ void CheckSizeof::checkSizeofForArrayParameter() if (!mSettings->isEnabled(Settings::WARNING)) return; const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (Token::Match(tok, "sizeof ( %var% )") || Token::Match(tok, "sizeof %var% !![")) { @@ -116,9 +112,7 @@ void CheckSizeof::checkSizeofForPointerSize() return; const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) { const Token* tokSize; const Token* tokFunc; diff --git a/lib/checkstring.cpp b/lib/checkstring.cpp index adc12b168..a6869f569 100644 --- a/lib/checkstring.cpp +++ b/lib/checkstring.cpp @@ -56,9 +56,7 @@ static const struct CWE CWE758(758U); // Reliance on Undefined, Unspecified, o void CheckString::stringLiteralWrite() { const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (!tok->variable() || !tok->variable()->isPointer()) continue; @@ -169,9 +167,7 @@ void CheckString::checkSuspiciousStringCompare() return; const SymbolDatabase* symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (tok->tokType() != Token::eComparisonOp) continue; @@ -250,9 +246,7 @@ static bool isChar(const Variable* var) void CheckString::strPlusChar() { const SymbolDatabase* symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (tok->str() == "+") { if (tok->astOperand1() && (tok->astOperand1()->tokType() == Token::eString)) { // string literal... @@ -279,9 +273,7 @@ void CheckString::checkIncorrectStringCompare() return; const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { // skip "assert(str && ..)" and "assert(.. && str)" if ((endsWith(tok->str(), "assert", 6) || endsWith(tok->str(), "ASSERT", 6)) && @@ -342,9 +334,7 @@ void CheckString::overlappingStrcmp() return; const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (tok->str() != "||") continue; @@ -382,23 +372,21 @@ void CheckString::overlappingStrcmp() notEquals0.push_back(t); } - for (std::list::const_iterator eq0 = equals0.begin(); eq0 != equals0.end(); ++eq0) { - for (std::list::const_iterator ne0 = notEquals0.begin(); ne0 != notEquals0.end(); ++ne0) { - const Token *tok1 = *eq0; - const Token *tok2 = *ne0; - if (!Token::simpleMatch(tok1->previous(), "strcmp (")) + for (const Token *eq0 : equals0) { + for (const Token * ne0 : notEquals0) { + if (!Token::simpleMatch(eq0->previous(), "strcmp (")) continue; - if (!Token::simpleMatch(tok2->previous(), "strcmp (")) + if (!Token::simpleMatch(ne0->previous(), "strcmp (")) continue; - const std::vector args1 = getArguments(tok1->previous()); - const std::vector args2 = getArguments(tok2->previous()); + const std::vector args1 = getArguments(eq0->previous()); + const std::vector args2 = getArguments(ne0->previous()); if (args1.size() != 2 || args2.size() != 2) continue; if (args1[1]->isLiteral() && args2[1]->isLiteral() && args1[1]->str() != args2[1]->str() && isSameExpression(mTokenizer->isCPP(), true, args1[0], args2[0], mSettings->library, true)) - overlappingStrcmpError(tok1, tok2); + overlappingStrcmpError(eq0, ne0); } } } @@ -425,9 +413,7 @@ void CheckString::overlappingStrcmpError(const Token *eq0, const Token *ne0) void CheckString::sprintfOverlappingData() { const SymbolDatabase* symbolDatabase = mTokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) { if (!Token::Match(tok, "sprintf|snprintf|swprintf (")) continue;