同步操作将从 Gitee 极速下载/Cppcheck 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/** Cppcheck - A tool for static C/C++ code analysis* Copyright (C) 2007-2020 Cppcheck team.** This program is free software: you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program. If not, see <http://www.gnu.org/licenses/>.*/#include "checkboost.h"#include "symboldatabase.h"#include "token.h"#include <cstddef>// Register this check class (by creating a static instance of it)namespace {CheckBoost instance;}static const CWE CWE664(664);void CheckBoost::checkBoostForeachModification(){const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase();for (const Scope * scope : symbolDatabase->functionScopes) {for (const Token *tok = scope->bodyStart->next(); tok && tok != scope->bodyEnd; tok = tok->next()) {if (!Token::simpleMatch(tok, "BOOST_FOREACH ("))continue;const Token *containerTok = tok->next()->link()->previous();if (!Token::Match(containerTok, "%var% ) {"))continue;const Token *tok2 = containerTok->tokAt(2);const Token *end = tok2->link();for (; tok2 != end; tok2 = tok2->next()) {if (Token::Match(tok2, "%varid% . insert|erase|push_back|push_front|pop_front|pop_back|clear|swap|resize|assign|merge|remove|remove_if|reverse|sort|splice|unique|pop|push", containerTok->varId())) {const Token* nextStatement = Token::findsimplematch(tok2->linkAt(3), ";", end);if (!Token::Match(nextStatement, "; break|return|throw"))boostForeachError(tok2);break;}}}}}void CheckBoost::boostForeachError(const Token *tok){reportError(tok, Severity::error, "boostForeachError","BOOST_FOREACH caches the end() iterator. It's undefined behavior if you modify the container inside.", CWE664, false);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。