Skip to content

Commit c0ec52e

Browse files
committed
split suppressions from settings
1 parent 2d9f673 commit c0ec52e

32 files changed

Lines changed: 388 additions & 317 deletions

Makefile

Lines changed: 108 additions & 108 deletions
Large diffs are not rendered by default.

cli/cmdlineparser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1991,7 +1991,7 @@ std::string CmdLineParser::getVersion() const {
19911991

19921992
bool CmdLineParser::isCppcheckPremium() const {
19931993
if (mSettings.cppcheckCfgProductName.empty())
1994-
Settings::loadCppcheckCfg(mSettings, mSettings.supprs, mSettings.debuglookup || mSettings.debuglookupConfig);
1994+
Settings::loadCppcheckCfg(mSettings, mSuppressions, mSettings.debuglookup || mSettings.debuglookupConfig);
19951995
return startsWith(mSettings.cppcheckCfgProductName, "Cppcheck Premium");
19961996
}
19971997

cli/cppcheckexecutor.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,9 @@ namespace {
248248
class StdLogger : public ErrorLogger
249249
{
250250
public:
251-
explicit StdLogger(const Settings& settings)
251+
explicit StdLogger(const Settings& settings, const Suppressions& supprs)
252252
: mSettings(settings)
253+
, mSuppressions(supprs)
253254
, mGuidelineMapping(createGuidelineMapping(settings.reportType))
254255
{
255256
if (!mSettings.outputFile.empty()) {
@@ -305,9 +306,10 @@ namespace {
305306
void reportProgress(const std::string &filename, const char stage[], std::size_t value) override;
306307

307308
/**
308-
* Pointer to current settings; set while check() is running for reportError().
309+
* Reference to current settings; set while check() is running for reportError().
309310
*/
310311
const Settings& mSettings;
312+
const Suppressions& mSuppressions;
311313

312314
/**
313315
* Used to filter out duplicate error messages.
@@ -356,7 +358,8 @@ int CppCheckExecutor::check(int argc, const char* const argv[])
356358
{
357359
Settings settings;
358360
CmdLineLoggerStd logger;
359-
CmdLineParser parser(logger, settings, settings.supprs);
361+
Suppressions supprs;
362+
CmdLineParser parser(logger, settings, supprs);
360363
if (!parser.fillSettingsFromArgs(argc, argv)) {
361364
return EXIT_FAILURE;
362365
}
@@ -371,22 +374,22 @@ int CppCheckExecutor::check(int argc, const char* const argv[])
371374

372375
settings.setMisraRuleTexts(executeCommand);
373376

374-
const int ret = check_wrapper(settings);
377+
const int ret = check_wrapper(settings, supprs);
375378

376379
return ret;
377380
}
378381

379-
int CppCheckExecutor::check_wrapper(const Settings& settings)
382+
int CppCheckExecutor::check_wrapper(const Settings& settings, Suppressions& supprs)
380383
{
381384
#ifdef USE_WINDOWS_SEH
382385
if (settings.exceptionHandling) {
383-
CALL_WITH_SEH_WRAPPER(check_internal(settings));
386+
CALL_WITH_SEH_WRAPPER(check_internal(settings, supprs));
384387
}
385388
#elif defined(USE_UNIX_SIGNAL_HANDLING)
386389
if (settings.exceptionHandling)
387390
register_signal_handler(settings.exceptionOutput);
388391
#endif
389-
return check_internal(settings);
392+
return check_internal(settings, supprs);
390393
}
391394

392395
bool CppCheckExecutor::reportSuppressions(const Settings &settings, const SuppressionList& suppressions, bool unusedFunctionCheckEnabled, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, ErrorLogger& errorLogger) {
@@ -418,9 +421,9 @@ bool CppCheckExecutor::reportSuppressions(const Settings &settings, const Suppre
418421
/*
419422
* That is a method which gets called from check_wrapper
420423
* */
421-
int CppCheckExecutor::check_internal(const Settings& settings) const
424+
int CppCheckExecutor::check_internal(const Settings& settings, Suppressions& supprs) const
422425
{
423-
StdLogger stdLogger(settings);
426+
StdLogger stdLogger(settings, supprs);
424427

425428
if (settings.reportProgress >= 0)
426429
stdLogger.resetLatestProgressOutputTime();
@@ -439,25 +442,24 @@ int CppCheckExecutor::check_internal(const Settings& settings) const
439442
if (!settings.checkersReportFilename.empty())
440443
std::remove(settings.checkersReportFilename.c_str());
441444

442-
CppCheck cppcheck(stdLogger, true, executeCommand);
445+
CppCheck cppcheck(supprs, stdLogger, true, executeCommand);
443446
cppcheck.settings() = settings; // this is a copy
444-
auto& suppressions = cppcheck.settings().supprs.nomsg;
445447

446448
unsigned int returnValue = 0;
447449
if (settings.useSingleJob()) {
448450
// Single process
449-
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, suppressions, stdLogger);
451+
SingleExecutor executor(cppcheck, mFiles, mFileSettings, settings, supprs, stdLogger);
450452
returnValue = executor.check();
451453
} else {
452454
#if defined(HAS_THREADING_MODEL_THREAD)
453455
if (settings.executor == Settings::ExecutorType::Thread) {
454-
ThreadExecutor executor(mFiles, mFileSettings, settings, suppressions, stdLogger, CppCheckExecutor::executeCommand);
456+
ThreadExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, CppCheckExecutor::executeCommand);
455457
returnValue = executor.check();
456458
}
457459
#endif
458460
#if defined(HAS_THREADING_MODEL_FORK)
459461
if (settings.executor == Settings::ExecutorType::Process) {
460-
ProcessExecutor executor(mFiles, mFileSettings, settings, suppressions, stdLogger, CppCheckExecutor::executeCommand);
462+
ProcessExecutor executor(mFiles, mFileSettings, settings, supprs, stdLogger, CppCheckExecutor::executeCommand);
461463
returnValue = executor.check();
462464
}
463465
#endif
@@ -466,7 +468,7 @@ int CppCheckExecutor::check_internal(const Settings& settings) const
466468
returnValue |= cppcheck.analyseWholeProgram(settings.buildDir, mFiles, mFileSettings, stdLogger.getCtuInfo());
467469

468470
if (settings.severity.isEnabled(Severity::information) || settings.checkConfiguration) {
469-
const bool err = reportSuppressions(settings, suppressions, settings.checks.isEnabled(Checks::unusedFunction), mFiles, mFileSettings, stdLogger);
471+
const bool err = reportSuppressions(settings, supprs.nomsg, settings.checks.isEnabled(Checks::unusedFunction), mFiles, mFileSettings, stdLogger);
470472
if (err && returnValue == 0)
471473
returnValue = settings.exitCode;
472474
}
@@ -500,7 +502,7 @@ void StdLogger::writeCheckersReport()
500502

501503
CheckersReport checkersReport(mSettings, mActiveCheckers);
502504

503-
const auto& suppressions = mSettings.supprs.nomsg.getSuppressions();
505+
const auto& suppressions = mSuppressions.nomsg.getSuppressions();
504506
const bool summarySuppressed = std::any_of(suppressions.cbegin(), suppressions.cend(), [](const SuppressionList::Suppression& s) {
505507
return s.errorId == "checkersReport";
506508
});

cli/cppcheckexecutor.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
class Settings;
2929
class ErrorLogger;
3030
class SuppressionList;
31+
struct Suppressions;
3132

3233
/**
3334
* This class works as an example of how CppCheck can be used in external
@@ -76,20 +77,22 @@ class CppCheckExecutor {
7677
* - installs optional platform dependent signal handling
7778
*
7879
* @param settings the settings
80+
* @param supprs the suppressions
7981
**/
80-
int check_wrapper(const Settings& settings);
82+
int check_wrapper(const Settings& settings, Suppressions& supprs);
8183

8284
/**
8385
* Starts the checking.
8486
*
8587
* @param settings the settings
88+
* @param supprs the suppressions
8689
* @return EXIT_FAILURE if arguments are invalid or no input files
8790
* were found.
8891
* If errors are found and --error-exitcode is used,
8992
* given value is returned instead of default 0.
9093
* If no errors are found, 0 is returned.
9194
*/
92-
int check_internal(const Settings& settings) const;
95+
int check_internal(const Settings& settings, Suppressions& supprs) const;
9396

9497
/**
9598
* Filename associated with size of file

cli/executor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
struct FileSettings;
3232

33-
Executor::Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger)
33+
Executor::Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger)
3434
: mFiles(files), mFileSettings(fileSettings), mSettings(settings), mSuppressions(suppressions), mErrorLogger(errorLogger)
3535
{
3636
// the two inputs may only be used exclusively
@@ -43,7 +43,7 @@ bool Executor::hasToLog(const ErrorMessage &msg)
4343
if (!mSettings.library.reportErrors(msg.file0))
4444
return false;
4545

46-
if (!mSuppressions.isSuppressed(msg, {}))
46+
if (!mSuppressions.nomsg.isSuppressed(msg, {}))
4747
{
4848
// TODO: there should be no need for verbose and default messages here
4949
std::string errmsg = msg.toString(mSettings.verbose);

cli/executor.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
class Settings;
2929
class ErrorLogger;
3030
class ErrorMessage;
31-
class SuppressionList;
31+
struct Suppressions;
3232
struct FileSettings;
3333
class FileWithDetails;
3434

@@ -41,7 +41,7 @@ class FileWithDetails;
4141
*/
4242
class Executor {
4343
public:
44-
Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger);
44+
Executor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger);
4545
virtual ~Executor() = default;
4646

4747
Executor(const Executor &) = delete;
@@ -70,7 +70,7 @@ class Executor {
7070
const std::list<FileWithDetails> &mFiles;
7171
const std::list<FileSettings>& mFileSettings;
7272
const Settings &mSettings;
73-
SuppressionList &mSuppressions;
73+
Suppressions &mSuppressions;
7474
ErrorLogger &mErrorLogger;
7575

7676
private:

cli/processexecutor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ enum class Color : std::uint8_t;
6868
using std::memset;
6969

7070

71-
ProcessExecutor::ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand)
71+
ProcessExecutor::ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand)
7272
: Executor(files, fileSettings, settings, suppressions, errorLogger)
7373
, mExecuteCommand(std::move(executeCommand))
7474
{
@@ -284,7 +284,7 @@ unsigned int ProcessExecutor::check()
284284
close(pipes[0]);
285285

286286
PipeWriter pipewriter(pipes[1]);
287-
CppCheck fileChecker(pipewriter, false, mExecuteCommand);
287+
CppCheck fileChecker(mSuppressions, pipewriter, false, mExecuteCommand);
288288
fileChecker.settings() = mSettings;
289289
unsigned int resultOfCheck = 0;
290290

@@ -409,7 +409,7 @@ void ProcessExecutor::reportInternalChildErr(const std::string &childname, const
409409
"cppcheckError",
410410
Certainty::normal);
411411

412-
if (!mSuppressions.isSuppressed(errmsg, {}))
412+
if (!mSuppressions.nomsg.isSuppressed(errmsg, {}))
413413
mErrorLogger.reportErr(errmsg);
414414
}
415415

cli/processexecutor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
class Settings;
3030
class ErrorLogger;
31-
class SuppressionList;
31+
struct Suppressions;
3232
struct FileSettings;
3333
class FileWithDetails;
3434

@@ -41,7 +41,7 @@ class FileWithDetails;
4141
*/
4242
class ProcessExecutor : public Executor {
4343
public:
44-
ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand);
44+
ProcessExecutor(const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger, CppCheck::ExecuteCmdFn executeCommand);
4545
ProcessExecutor(const ProcessExecutor &) = delete;
4646
ProcessExecutor& operator=(const ProcessExecutor &) = delete;
4747

cli/singleexecutor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
class ErrorLogger;
3232

33-
SingleExecutor::SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger)
33+
SingleExecutor::SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger)
3434
: Executor(files, fileSettings, settings, suppressions, errorLogger)
3535
, mCppcheck(cppcheck)
3636
{

cli/singleexecutor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
class ErrorLogger;
2727
class Settings;
2828
class CppCheck;
29-
class SuppressionList;
29+
struct Suppressions;
3030
struct FileSettings;
3131
class FileWithDetails;
3232

3333
class SingleExecutor : public Executor
3434
{
3535
public:
36-
SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, SuppressionList &suppressions, ErrorLogger &errorLogger);
36+
SingleExecutor(CppCheck &cppcheck, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const Settings &settings, Suppressions &suppressions, ErrorLogger &errorLogger);
3737
SingleExecutor(const SingleExecutor &) = delete;
3838
SingleExecutor& operator=(const SingleExecutor &) = delete;
3939

0 commit comments

Comments
 (0)