Skip to content

Commit

Permalink
CppCheckExecutor: do not modify settings after they were passed to `C…
Browse files Browse the repository at this point in the history
…ppCheck` (#5697)
  • Loading branch information
firewave authored Nov 25, 2023
1 parent 8e1ae7e commit 1d3f9be
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 12 deletions.
16 changes: 9 additions & 7 deletions cli/cppcheckexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,10 +183,13 @@ int CppCheckExecutor::check(int argc, const char* const argv[])
return EXIT_SUCCESS;
}

settings.loadSummaries();

mFiles = parser.getFiles();
mFileSettings = parser.getFileSettings();

mStdLogger = new StdLogger(settings);

CppCheck cppCheck(*mStdLogger, true, executeCommand);
cppCheck.settings() = settings;

Expand Down Expand Up @@ -230,9 +233,10 @@ bool CppCheckExecutor::reportSuppressions(const Settings &settings, bool unusedF
/*
* That is a method which gets called from check_wrapper
* */
int CppCheckExecutor::check_internal(CppCheck& cppcheck)
int CppCheckExecutor::check_internal(CppCheck& cppcheck) const
{
Settings& settings = cppcheck.settings();
const auto& settings = cppcheck.settings();
auto& suppressions = cppcheck.settings().nomsg;

if (settings.reportProgress >= 0)
mStdLogger->resetLatestProgressOutputTime();
Expand All @@ -242,8 +246,6 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck)
}

if (!settings.buildDir.empty()) {
settings.loadSummaries();

std::list<std::string> fileNames;
for (std::list<std::pair<std::string, std::size_t>>::const_iterator i = mFiles.cbegin(); i != mFiles.cend(); ++i)
fileNames.emplace_back(i->first);
Expand All @@ -256,13 +258,13 @@ int CppCheckExecutor::check_internal(CppCheck& cppcheck)
unsigned int returnValue;
if (settings.useSingleJob()) {
// Single process
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, settings.nomsg, *mStdLogger);
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, suppressions, *mStdLogger);
returnValue = executor.check();
} else {
#if defined(THREADING_MODEL_THREAD)
ThreadExecutor executor(mFiles, mFileSettings, settings, settings.nomsg, *mStdLogger, CppCheckExecutor::executeCommand);
ThreadExecutor executor(mFiles, mFileSettings, settings, suppressions, *mStdLogger, CppCheckExecutor::executeCommand);
#elif defined(THREADING_MODEL_FORK)
ProcessExecutor executor(mFiles, mFileSettings, settings, settings.nomsg, *mStdLogger, CppCheckExecutor::executeCommand);
ProcessExecutor executor(mFiles, mFileSettings, settings, suppressions, *mStdLogger, CppCheckExecutor::executeCommand);
#endif
returnValue = executor.check();
}
Expand Down
2 changes: 1 addition & 1 deletion cli/cppcheckexecutor.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class CppCheckExecutor {
* given value is returned instead of default 0.
* If no errors are found, 0 is returned.
*/
int check_internal(CppCheck& cppcheck);
int check_internal(CppCheck& cppcheck) const;

/**
* Filename associated with size of file
Expand Down
2 changes: 1 addition & 1 deletion cli/cppcheckexecutorseh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ namespace {
* TODO Check for multi-threading issues!
*
*/
int check_wrapper_seh(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&), CppCheck& cppcheck)
int check_wrapper_seh(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&) const, CppCheck& cppcheck)
{
FILE *outputFile = CppCheckExecutor::getExceptionOutput();
__try {
Expand Down
2 changes: 1 addition & 1 deletion cli/cppcheckexecutorseh.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
class CppCheckExecutor;
class CppCheck;

int check_wrapper_seh(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&), CppCheck& cppcheck);
int check_wrapper_seh(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&) const, CppCheck& cppcheck);

#endif

Expand Down
2 changes: 1 addition & 1 deletion cli/cppcheckexecutorsig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ static void CppcheckSignalHandler(int signo, siginfo_t * info, void * context)
}
}

int check_wrapper_sig(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&), CppCheck& cppcheck)
int check_wrapper_sig(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&) const, CppCheck& cppcheck)
{
// determine stack vs. heap
char stackVariable;
Expand Down
2 changes: 1 addition & 1 deletion cli/cppcheckexecutorsig.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
class CppCheckExecutor;
class CppCheck;

int check_wrapper_sig(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&), CppCheck& cppcheck);
int check_wrapper_sig(CppCheckExecutor& executor, int (CppCheckExecutor::*f)(CppCheck&) const, CppCheck& cppcheck);

#endif // CPPCHECKEXECUTORSIG_H

Expand Down

0 comments on commit 1d3f9be

Please sign in to comment.