同步操作将从 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 "check.h"#include "errorlogger.h"#include "settings.h"#include "tokenize.h"#include <iostream>//---------------------------------------------------------------------------Check::Check(const std::string &aname): mTokenizer(nullptr), mSettings(nullptr), mErrorLogger(nullptr), mName(aname){for (std::list<Check*>::iterator i = instances().begin(); i != instances().end(); ++i) {if ((*i)->name() > aname) {instances().insert(i, this);return;}}instances().push_back(this);}void Check::reportError(const ErrorMessage &errmsg){std::cout << errmsg.toXML() << std::endl;}void Check::reportError(const std::list<const Token *> &callstack, Severity::SeverityType severity, const std::string &id, const std::string &msg, const CWE &cwe, bool inconclusive){const ErrorMessage errmsg(callstack, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive);if (mErrorLogger)mErrorLogger->reportErr(errmsg);elsereportError(errmsg);}void Check::reportError(const ErrorPath &errorPath, Severity::SeverityType severity, const char id[], const std::string &msg, const CWE &cwe, bool inconclusive){const ErrorMessage errmsg(errorPath, mTokenizer ? &mTokenizer->list : nullptr, severity, id, msg, cwe, inconclusive);if (mErrorLogger)mErrorLogger->reportErr(errmsg);elsereportError(errmsg);}bool Check::wrongData(const Token *tok, bool condition, const char *str){#if defined(DACA2) || defined(UNSTABLE)if (condition) {reportError(tok, Severity::debug, "DacaWrongData", "Wrong data detected by condition " + std::string(str));}#else(void)tok;(void)str;#endifreturn condition;}std::list<Check *> &Check::instances(){#ifdef __SVR4// Under Solaris, destructors are called in wrong order which causes a segmentation fault.// This fix ensures pointer remains valid and reachable until program terminates.static std::list<Check *> *_instances= new std::list<Check *>;return *_instances;#elsestatic std::list<Check *> _instances;return _instances;#endif}std::string Check::getMessageId(const ValueFlow::Value &value, const char id[]){if (value.condition != nullptr)return id + std::string("Cond");if (value.safe)return std::string("safe") + (char)std::toupper(id[0]) + (id + 1);return id;}ErrorPath Check::getErrorPath(const Token* errtok, const ValueFlow::Value* value, const std::string& bug) const{ErrorPath errorPath;if (!value) {errorPath.emplace_back(errtok, bug);} else if (mSettings->verbose || mSettings->xml || !mSettings->templateLocation.empty()) {errorPath = value->errorPath;errorPath.emplace_back(errtok, bug);} else {if (value->condition)errorPath.emplace_back(value->condition, "condition '" + value->condition->expressionString() + "'");//else if (!value->isKnown() || value->defaultArg)// errorPath = value->callstack;errorPath.emplace_back(errtok, bug);}return errorPath;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。