同步操作将从 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 <QFile>#include <QString>#include <QMutexLocker>#include <QList>#include <QStringList>#include <QDebug>#include "common.h"#include "erroritem.h"#include "errorlogger.h"#include "threadresult.h"ThreadResult::ThreadResult() : QObject(), ErrorLogger(), mMaxProgress(0), mProgress(0), mFilesChecked(0), mTotalFiles(0){//ctor}ThreadResult::~ThreadResult(){//dtor}void ThreadResult::reportOut(const std::string &outmsg){emit log(QString::fromStdString(outmsg));}void ThreadResult::fileChecked(const QString &file){QMutexLocker locker(&mutex);mProgress += QFile(file).size();mFilesChecked ++;if (mMaxProgress > 0) {const int value = static_cast<int>(PROGRESS_MAX * mProgress / mMaxProgress);const QString description = tr("%1 of %2 files checked").arg(mFilesChecked).arg(mTotalFiles);emit progress(value, description);}}void ThreadResult::reportErr(const ErrorMessage &msg){QMutexLocker locker(&mutex);const ErrorItem item(msg);if (msg.severity != Severity::debug)emit error(item);elseemit debugError(item);}QString ThreadResult::getNextFile(){QMutexLocker locker(&mutex);if (mFiles.isEmpty()) {return QString();}return mFiles.takeFirst();}ImportProject::FileSettings ThreadResult::getNextFileSettings(){QMutexLocker locker(&mutex);if (mFileSettings.empty()) {return ImportProject::FileSettings();}const ImportProject::FileSettings fs = mFileSettings.front();mFileSettings.pop_front();return fs;}void ThreadResult::setFiles(const QStringList &files){QMutexLocker locker(&mutex);mFiles = files;mProgress = 0;mFilesChecked = 0;mTotalFiles = files.size();// Determine the total size of all of the files to check, so that we can// show an accurate progress estimatequint64 sizeOfFiles = 0;foreach (const QString& file, files) {sizeOfFiles += QFile(file).size();}mMaxProgress = sizeOfFiles;}void ThreadResult::setProject(const ImportProject &prj){QMutexLocker locker(&mutex);mFiles.clear();mFileSettings = prj.fileSettings;mProgress = 0;mFilesChecked = 0;mTotalFiles = prj.fileSettings.size();// Determine the total size of all of the files to check, so that we can// show an accurate progress estimatequint64 sizeOfFiles = 0;foreach (const ImportProject::FileSettings& fs, prj.fileSettings) {sizeOfFiles += QFile(QString::fromStdString(fs.filename)).size();}mMaxProgress = sizeOfFiles;}void ThreadResult::clearFiles(){QMutexLocker locker(&mutex);mFiles.clear();mFileSettings.clear();mFilesChecked = 0;mTotalFiles = 0;}int ThreadResult::getFileCount() const{QMutexLocker locker(&mutex);return mFiles.size() + mFileSettings.size();}void ThreadResult::bughuntingReport(const std::string &str){if (str.empty())return;emit bughuntingReportLine(QString::fromStdString(str));}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。