同步操作将从 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/>.*///---------------------------------------------------------------------------// You should use ++ and -- as prefix whenever possible as these are more// efficient than postfix operators//---------------------------------------------------------------------------#include "checkpostfixoperator.h"#include "settings.h"#include "symboldatabase.h"#include "token.h"#include <cstddef>//---------------------------------------------------------------------------// Register this check class (by creating a static instance of it)namespace {CheckPostfixOperator instance;}// CWE ids usedstatic const struct CWE CWE398(398U); // Indicator of Poor Code Qualityvoid CheckPostfixOperator::postfixOperator(){if (!mSettings->isEnabled(Settings::PERFORMANCE))return;const SymbolDatabase *symbolDatabase = mTokenizer->getSymbolDatabase();for (const Scope * scope : symbolDatabase->functionScopes) {for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {const Variable *var = tok->variable();if (!var || !Token::Match(tok, "%var% ++|--"))continue;const Token* parent = tok->next()->astParent();if (!parent || parent->str() == ";" || (parent->str() == "," && (!parent->astParent() || parent->astParent()->str() != "("))) {if (var->isPointer() || var->isArray())continue;if (Token::Match(var->nameToken()->previous(), "iterator|const_iterator|reverse_iterator|const_reverse_iterator")) {// the variable is an iteratorpostfixOperatorError(tok);} else if (var->type()) {// the variable is an instance of classpostfixOperatorError(tok);}}}}}//---------------------------------------------------------------------------void CheckPostfixOperator::postfixOperatorError(const Token *tok){reportError(tok, Severity::performance, "postfixOperator","Prefer prefix ++/-- operators for non-primitive types.\n""Prefix ++/-- operators should be preferred for non-primitive types. ""Pre-increment/decrement can be more efficient than ""post-increment/decrement. Post-increment/decrement usually ""involves keeping a copy of the previous value around and ""adds a little extra code.", CWE398, false);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。