⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -718,7 +718,7 @@ cli/stacktrace.o: cli/stacktrace.cpp cli/stacktrace.h lib/config.h lib/utils.h
cli/threadexecutor.o: cli/threadexecutor.cpp cli/executor.h cli/threadexecutor.h lib/addoninfo.h lib/check.h lib/checkers.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/utils.h
$(CXX) ${INCLUDE_FOR_CLI} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ cli/threadexecutor.cpp

test/fixture.o: test/fixture.cpp externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/check.h lib/checkers.h lib/color.h lib/config.h lib/cppcheck.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/xml.h test/fixture.h test/helpers.h test/options.h test/redirect.h
test/fixture.o: test/fixture.cpp externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/check.h lib/checkers.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/xml.h test/fixture.h test/helpers.h test/options.h test/redirect.h
$(CXX) ${INCLUDE_FOR_TEST} ${CFLAGS_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/fixture.cpp

test/helpers.o: test/helpers.cpp cli/filelister.h externals/simplecpp/simplecpp.h externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/checkers.h lib/config.h lib/errortypes.h lib/filesettings.h lib/library.h lib/mathlib.h lib/path.h lib/pathmatch.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/xml.h test/helpers.h
Expand Down
9 changes: 5 additions & 4 deletions cli/cppcheckexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,7 @@ bool CppCheckExecutor::reportUnmatchedSuppressions(const Settings &settings, con
int CppCheckExecutor::check_internal(const Settings& settings, Suppressions& supprs) const
{
StdLogger stdLogger(settings);
TimerResults timerResults;

if (settings.reportProgress >= 0)
stdLogger.resetLatestProgressOutputTime();
Expand All @@ -402,23 +403,23 @@ int CppCheckExecutor::check_internal(const Settings& settings, Suppressions& sup
if (!settings.checkersReportFilename.empty())
std::remove(settings.checkersReportFilename.c_str());

CppCheck cppcheck(settings, supprs, stdLogger, true, executeCommand);
CppCheck cppcheck(settings, supprs, stdLogger, &timerResults, true, executeCommand);

unsigned int returnValue = 0;
if (settings.useSingleJob()) {
// Single process
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, supprs, stdLogger);
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, supprs, stdLogger, &timerResults);
returnValue = executor.check();
} else {
#if defined(HAS_THREADING_MODEL_THREAD)
if (settings.executor == Settings::ExecutorType::Thread) {
ThreadExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, CppCheckExecutor::executeCommand);
ThreadExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, &timerResults, CppCheckExecutor::executeCommand);
returnValue = executor.check();
}
#endif
#if defined(HAS_THREADING_MODEL_FORK)
if (settings.executor == Settings::ExecutorType::Process) {
ProcessExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, CppCheckExecutor::executeCommand);
ProcessExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, &timerResults, CppCheckExecutor::executeCommand);
returnValue = executor.check();
}
#endif
Expand Down
4 changes: 2 additions & 2 deletions cli/executor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

struct FileSettings;

Executor::Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger)
: mFiles(files), mFileSettings(fileSettings), mSettings(settings), mSuppressions(suppressions), mErrorLogger(errorLogger)
Executor::Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults)
: mFiles(files), mFileSettings(fileSettings), mSettings(settings), mSuppressions(suppressions), mErrorLogger(errorLogger), mTimerResults(timerResults)
{
// the two inputs may only be used exclusively
assert(!(!files.empty() && !fileSettings.empty()));
Expand Down
4 changes: 3 additions & 1 deletion cli/executor.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class ErrorMessage;
struct Suppressions;
struct FileSettings;
class FileWithDetails;
class TimerResults;

/// @addtogroup CLI
/// @{
Expand All @@ -41,7 +42,7 @@ class FileWithDetails;
*/
class Executor {
public:
Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger);
Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults);
virtual ~Executor() = default;

Executor(const Executor &) = delete;
Expand Down Expand Up @@ -72,6 +73,7 @@ class Executor {
const Settings &mSettings;
Suppressions &mSuppressions;
ErrorLogger &mErrorLogger;
TimerResults *mTimerResults;

private:
std::mutex mErrorListSync;
Expand Down
10 changes: 5 additions & 5 deletions cli/processexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ enum class Color : std::uint8_t;
using std::memset;


ProcessExecutor::ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand)
: Executor(files, fileSettings, settings, suppressions, errorLogger)
ProcessExecutor::ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults, CppCheck::ExecuteCmdFn executeCommand)
: Executor(files, fileSettings, settings, suppressions, errorLogger, timerResults)
, mExecuteCommand(std::move(executeCommand))
{
assert(mSettings.jobs > 1);
Expand Down Expand Up @@ -344,7 +344,7 @@ unsigned int ProcessExecutor::check()
close(pipes[0]);

PipeWriter pipewriter(pipes[1]);
CppCheck fileChecker(mSettings, mSuppressions, pipewriter, false, mExecuteCommand);
CppCheck fileChecker(mSettings, mSuppressions, pipewriter, mTimerResults, false, mExecuteCommand);
unsigned int resultOfCheck = 0;

if (iFileSettings != mFileSettings.end()) {
Expand Down Expand Up @@ -450,8 +450,8 @@ unsigned int ProcessExecutor::check()
}

// TODO: wee need to get the timing information from the subprocess
if (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY)
CppCheck::printTimerResults(mSettings.showtime);
if (mTimerResults && (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY))
mTimerResults->showResults(mSettings.showtime);

return result;
}
Expand Down
3 changes: 2 additions & 1 deletion cli/processexecutor.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class ErrorLogger;
struct Suppressions;
struct FileSettings;
class FileWithDetails;
class TimerResults;

/// @addtogroup CLI
/// @{
Expand All @@ -45,7 +46,7 @@ class FileWithDetails;
*/
class ProcessExecutor : public Executor {
public:
ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand);
ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults, CppCheck::ExecuteCmdFn executeCommand);
ProcessExecutor(const ProcessExecutor &) = delete;
ProcessExecutor& operator=(const ProcessExecutor &) = delete;

Expand Down
8 changes: 4 additions & 4 deletions cli/singleexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@

class ErrorLogger;

SingleExecutor::SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger)
: Executor(files, fileSettings, settings, suppressions, errorLogger)
SingleExecutor::SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults)
: Executor(files, fileSettings, settings, suppressions, errorLogger, timerResults)
, mCppcheck(cppcheck)
{
assert(mSettings.jobs == 1);
Expand Down Expand Up @@ -71,8 +71,8 @@ unsigned int SingleExecutor::check()
if (mCppcheck.analyseWholeProgram())
result++;

if (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY)
CppCheck::printTimerResults(mSettings.showtime);
if (mTimerResults && (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY))
mTimerResults->showResults(mSettings.showtime);

return result;
}
3 changes: 2 additions & 1 deletion cli/singleexecutor.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@ class CppCheck;
struct Suppressions;
struct FileSettings;
class FileWithDetails;
class TimerResults;

class SingleExecutor : public Executor
{
public:
SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger);
SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults);
SingleExecutor(const SingleExecutor &) = delete;
SingleExecutor& operator=(const SingleExecutor &) = delete;

Expand Down
26 changes: 13 additions & 13 deletions cli/threadexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
#include <utility>
#include <vector>

ThreadExecutor::ThreadExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand)
: Executor(files, fileSettings, settings, suppressions, errorLogger)
ThreadExecutor::ThreadExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults, CppCheck::ExecuteCmdFn executeCommand)
: Executor(files, fileSettings, settings, suppressions, errorLogger, timerResults)
, mExecuteCommand(std::move(executeCommand))
{
assert(mSettings.jobs > 1);
Expand Down Expand Up @@ -87,8 +87,8 @@ class SyncLogForwarder : public ErrorLogger
class ThreadData
{
public:
ThreadData(ThreadExecutor &threadExecutor, ErrorLogger &errorLogger, const Settings &settings, Suppressions& supprs, const std::list<FileWithDetails> &files, const std::list<FileSettings> &fileSettings, CppCheck::ExecuteCmdFn executeCommand)
: mFiles(files), mFileSettings(fileSettings), mSettings(settings), mSuppressions(supprs), mExecuteCommand(std::move(executeCommand)), logForwarder(threadExecutor, errorLogger)
ThreadData(ThreadExecutor &threadExecutor, ErrorLogger &errorLogger, TimerResults *timerResults, const Settings &settings, Suppressions& supprs, const std::list<FileWithDetails> &files, const std::list<FileSettings> &fileSettings, CppCheck::ExecuteCmdFn executeCommand)
: mFiles(files), mFileSettings(fileSettings), mTimerResults(timerResults), mSettings(settings), mSuppressions(supprs), mExecuteCommand(std::move(executeCommand)), mLogForwarder(threadExecutor, errorLogger)
{
mItNextFile = mFiles.begin();
mItNextFileSettings = mFileSettings.begin();
Expand Down Expand Up @@ -119,8 +119,8 @@ class ThreadData
return false;
}

unsigned int check(ErrorLogger &errorLogger, const FileWithDetails *file, const FileSettings *fs) const {
CppCheck fileChecker(mSettings, mSuppressions, errorLogger, false, mExecuteCommand);
unsigned int check(const FileWithDetails *file, const FileSettings *fs) {
CppCheck fileChecker(mSettings, mSuppressions, mLogForwarder, mTimerResults, false, mExecuteCommand);

unsigned int result;
if (fs) {
Expand Down Expand Up @@ -155,7 +155,7 @@ class ThreadData
mProcessedSize += fileSize;
mProcessedFiles++;
if (!mSettings.quiet)
logForwarder.reportStatus(mProcessedFiles, mTotalFiles, mProcessedSize, mTotalFileSize);
mLogForwarder.reportStatus(mProcessedFiles, mTotalFiles, mProcessedSize, mTotalFileSize);
}

private:
Expand All @@ -170,12 +170,12 @@ class ThreadData
std::size_t mTotalFileSize{};

std::mutex mFileSync;
TimerResults *mTimerResults;
const Settings &mSettings;
Suppressions &mSuppressions;
CppCheck::ExecuteCmdFn mExecuteCommand;

public:
SyncLogForwarder logForwarder;
SyncLogForwarder mLogForwarder;
};

static unsigned int STDCALL threadProc(ThreadData *data)
Expand All @@ -187,7 +187,7 @@ static unsigned int STDCALL threadProc(ThreadData *data)
std::size_t fileSize;

while (data->next(file, fs, fileSize)) {
result += data->check(data->logForwarder, file, fs);
result += data->check(file, fs);

data->status(fileSize);
}
Expand All @@ -200,7 +200,7 @@ unsigned int ThreadExecutor::check()
std::vector<std::future<unsigned int>> threadFutures;
threadFutures.reserve(mSettings.jobs);

ThreadData data(*this, mErrorLogger, mSettings, mSuppressions, mFiles, mFileSettings, mExecuteCommand);
ThreadData data(*this, mErrorLogger, mTimerResults, mSettings, mSuppressions, mFiles, mFileSettings, mExecuteCommand);

for (unsigned int i = 0; i < mSettings.jobs; ++i) {
try {
Expand All @@ -216,8 +216,8 @@ unsigned int ThreadExecutor::check()
return v + f.get();
});

if (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY)
CppCheck::printTimerResults(mSettings.showtime);
if (mTimerResults && (mSettings.showtime == ShowTime::SUMMARY || mSettings.showtime == ShowTime::TOP5_SUMMARY))
mTimerResults->showResults(mSettings.showtime);

return result;
}
Expand Down
3 changes: 2 additions & 1 deletion cli/threadexecutor.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class ErrorLogger;
struct Suppressions;
struct FileSettings;
class FileWithDetails;
class TimerResults;

/// @addtogroup CLI
/// @{
Expand All @@ -45,7 +46,7 @@ class ThreadExecutor : public Executor {
friend class SyncLogForwarder;

public:
ThreadExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand);
ThreadExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, TimerResults* timerResults, CppCheck::ExecuteCmdFn executeCommand);
ThreadExecutor(const ThreadExecutor &) = delete;
ThreadExecutor& operator=(const ThreadExecutor &) = delete;

Expand Down
2 changes: 1 addition & 1 deletion democlient/democlient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class CppcheckExecutor : public ErrorLogger {
public:
CppcheckExecutor(const Settings& settings)
: stoptime(std::time(nullptr)+2U)
, cppcheck(settings, supprs, *this, false, nullptr)
, cppcheck(settings, supprs, *this, nullptr, false, nullptr)
{}

void run(const char* code) {
Expand Down
2 changes: 1 addition & 1 deletion gui/checkthread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ void CheckThread::run()
{
mState = Running;

CppCheck cppcheck(mSettings, *mSuppressions, mResult, true, executeCommand);
CppCheck cppcheck(mSettings, *mSuppressions, mResult, nullptr, true, executeCommand);

if (!mFiles.empty() || mAnalyseWholeProgram) {
mAnalyseWholeProgram = false;
Expand Down
2 changes: 1 addition & 1 deletion gui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ void MainWindow::analyzeCode(const QString& code, const QString& filename)
mUI->mResults, SLOT(debugError(ErrorItem)));

// Create CppCheck instance
CppCheck cppcheck(checkSettings, supprs, result, true, nullptr);
CppCheck cppcheck(checkSettings, supprs, result, nullptr, true, nullptr);

// Check
checkLockDownUI();
Expand Down
Loading
Loading