| 1462 | } |
| 1463 | |
| 1464 | void CheckStlImpl::stlBoundaries() |
| 1465 | { |
| 1466 | logChecker("CheckStl::stlBoundaries"); |
| 1467 | |
| 1468 | const SymbolDatabase* const symbolDatabase = mTokenizer->getSymbolDatabase(); |
| 1469 | for (const Variable* var : symbolDatabase->variableList()) { |
| 1470 | if (!var || !var->scope() || !var->scope()->isExecutable()) |
| 1471 | continue; |
| 1472 | |
| 1473 | const Library::Container* container = mSettings.library.detectIterator(var->typeStartToken()); |
| 1474 | if (!container || container->opLessAllowed) |
| 1475 | continue; |
| 1476 | |
| 1477 | const Token* const end = var->scope()->bodyEnd; |
| 1478 | for (const Token *tok = var->nameToken(); tok != end; tok = tok->next()) { |
| 1479 | if (Token::Match(tok, "!!* %varid% <", var->declarationId())) { |
| 1480 | stlBoundariesError(tok); |
| 1481 | } else if (Token::Match(tok, "> %varid% !!.", var->declarationId())) { |
| 1482 | stlBoundariesError(tok); |
| 1483 | } |
| 1484 | } |
| 1485 | } |
| 1486 | } |
| 1487 | |
| 1488 | // Error message for bad boundary usage.. |
| 1489 | void CheckStlImpl::stlBoundariesError(const Token *tok) |
no test coverage detected