diff --git a/lib/checkother.cpp b/lib/checkother.cpp index 28eabc05e..dde9c0bbd 100644 --- a/lib/checkother.cpp +++ b/lib/checkother.cpp @@ -84,9 +84,7 @@ void CheckOther::checkCastIntToCharAndBack() return; const SymbolDatabase *symbolDatabase = _tokenizer->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) { std::map vars; for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { // Quick check to see if any of the matches below have any chances @@ -154,9 +152,7 @@ void CheckOther::clarifyCalculation() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { // ? operator where lhs is arithmetical expression if (tok->str() != "?" || !tok->astOperand1() || !tok->astOperand1()->isCalculation()) @@ -208,9 +204,7 @@ void CheckOther::clarifyStatement() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart; tok && tok != scope->classEnd; tok = tok->next()) { if (Token::Match(tok, "* %name%") && tok->astOperand1()) { const Token *tok2 = tok->previous(); @@ -276,8 +270,7 @@ void CheckOther::warningOldStylePointerCast() return; const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase(); - for (std::size_t i = 0; i < symbolDatabase->functionScopes.size(); ++i) { - const Scope * scope = symbolDatabase->functionScopes[i]; + for (const Scope * scope : symbolDatabase->functionScopes) { const Token* tok; if (scope->function && scope->function->isConstructor()) tok = scope->classDef; @@ -328,9 +321,7 @@ void CheckOther::invalidPointerCast() const bool printInconclusive = _settings->inconclusive; const SymbolDatabase* const symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { const Token* toTok = nullptr; const Token* fromTok = nullptr; @@ -390,9 +381,7 @@ void CheckOther::checkPipeParameterSize() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { if (Token::Match(tok, "pipe ( %var% )") || Token::Match(tok, "pipe2 ( %var% ,")) { @@ -900,11 +889,11 @@ void CheckOther::checkSuspiciousCaseInSwitch() const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase(); - for (std::list::const_iterator i = symbolDatabase->scopeList.begin(); i != symbolDatabase->scopeList.end(); ++i) { - if (i->type != Scope::eSwitch) + for (const Scope & scope : symbolDatabase->scopeList) { + if (scope.type != Scope::eSwitch) continue; - for (const Token* tok = i->classStart->next(); tok != i->classEnd; tok = tok->next()) { + for (const Token* tok = scope.classStart->next(); tok != scope.classEnd; tok = tok->next()) { if (tok->str() == "case") { const Token* finding = nullptr; for (const Token* tok2 = tok->next(); tok2; tok2 = tok2->next()) { @@ -942,9 +931,7 @@ void CheckOther::checkSuspiciousEqualityComparison() return; const SymbolDatabase* symbolDatabase = _tokenizer->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->classStart; tok != scope->classEnd; tok = tok->next()) { if (Token::simpleMatch(tok, "for (")) { const Token* const openParen = tok->next(); @@ -997,10 +984,7 @@ void CheckOther::checkUnreachableCode() return; const bool printInconclusive = _settings->inconclusive; const SymbolDatabase* symbolDatabase = _tokenizer->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->classStart; tok && tok != scope->classEnd; tok = tok->next()) { const Token* secondBreak = nullptr; const Token* labelName = nullptr; @@ -1491,9 +1475,7 @@ void CheckOther::checkCharVariable() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart; tok != scope->classEnd; tok = tok->next()) { if (Token::Match(tok, "%var% [")) { if (!tok->variable()) @@ -1722,9 +1704,7 @@ void CheckOther::checkMisusedScopedObject() return; const SymbolDatabase * const symbolDatabase = _tokenizer->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->classStart; tok && tok != scope->classEnd; tok = tok->next()) { if ((tok->next()->type() || (tok->next()->function() && tok->next()->function()->isConstructor())) // TODO: The rhs of || should be removed; It is a workaround for a symboldatabase bug && Token::Match(tok, "[;{}] %name% (") @@ -1822,9 +1802,7 @@ void CheckOther::checkInvalidFree() const bool printInconclusive = _settings->inconclusive; const SymbolDatabase* symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { // Keep track of which variables were assigned addresses to newly-allocated memory @@ -2078,9 +2056,7 @@ void CheckOther::checkComparisonFunctionIsAlwaysTrueOrFalse() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { if (tok->isName() && Token::Match(tok, "isgreater|isless|islessgreater|isgreaterequal|islessequal ( %var% , %var% )")) { const unsigned int varidLeft = tok->tokAt(2)->varId();// get the left varid @@ -2128,9 +2104,7 @@ void CheckOther::checkSignOfUnsignedVariable() const SymbolDatabase *symbolDatabase = _tokenizer->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) { // check all the code in the function for (const Token *tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) { if (!tok->isComparisonOp() || !tok->astOperand1() || !tok->astOperand2()) @@ -2353,9 +2327,7 @@ void CheckOther::checkIncompleteArrayFill() const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart->next(); tok != scope->classEnd; tok = tok->next()) { if (Token::Match(tok, "memset|memcpy|memmove ( %var% ,") && Token::Match(tok->linkAt(1)->tokAt(-2), ", %num% )")) { const Variable *var = tok->tokAt(2)->variable(); @@ -2403,9 +2375,7 @@ void CheckOther::checkVarFuncNullUB() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart; tok != scope->classEnd; tok = tok->next()) { // Is NULL passed to a function? if (Token::Match(tok,"[(,] NULL [,)]")) { @@ -2570,10 +2540,7 @@ void CheckOther::checkUnusedLabel() return; const SymbolDatabase *symbolDatabase = _tokenizer->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->classStart; tok != scope->classEnd; tok = tok->next()) { if (!tok->scope()->isExecutable()) tok = tok->scope()->classEnd; @@ -2609,9 +2576,7 @@ void CheckOther::checkEvaluationOrder() return; const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase(); - const std::size_t functions = symbolDatabase->functionScopes.size(); - for (std::size_t i = 0; i < functions; ++i) { - const Scope * functionScope = symbolDatabase->functionScopes[i]; + for (const Scope * functionScope : symbolDatabase->functionScopes) { for (const Token* tok = functionScope->classStart; tok != functionScope->classEnd; tok = tok->next()) { if (!Token::Match(tok, "++|--") && !tok->isAssignmentOp()) continue; @@ -2696,9 +2661,7 @@ void CheckOther::checkAccessOfMovedVariable() return; const bool reportInconclusive = _settings->inconclusive; const SymbolDatabase *symbolDatabase = _tokenizer->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) { const Token * scopeStart = scope->classStart; if (scope->function) { const Token * memberInitializationStart = scope->function->constructorMemberInitialization();