Skip to content

Commit 7191ed9

Browse files
authored
#12263: Constant Error 'missingInclude' (#5769)
Small adjustment of the log of the error. - printed only when there was `--enabled=information` and no mentioning of `missingInclude`
1 parent 3329e2f commit 7191ed9

2 files changed

Lines changed: 44 additions & 3 deletions

File tree

cli/cmdlineparser.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,8 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
376376

377377
ImportProject project;
378378

379+
int8_t logMissingInclude{0};
380+
379381
for (int i = 1; i < argc; i++) {
380382
if (argv[i][0] == '-') {
381383
// User define
@@ -551,6 +553,9 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
551553
mLogger.printError(errmsg);
552554
return Result::Fail;
553555
}
556+
if (std::string(argv[i] + 10).find("missingInclude") != std::string::npos) {
557+
--logMissingInclude;
558+
}
554559
}
555560

556561
// dump cppcheck data
@@ -570,9 +575,12 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
570575
mSettings.addEnabled("performance");
571576
mSettings.addEnabled("portability");
572577
}
573-
if (enable_arg.find("information") != std::string::npos) {
578+
if (enable_arg.find("information") != std::string::npos && logMissingInclude == 0) {
579+
++logMissingInclude;
574580
mSettings.addEnabled("missingInclude");
575-
mLogger.printMessage("'--enable=information' will no longer implicitly enable 'missingInclude' starting with 2.16. Please enable it explicitly if you require it.");
581+
}
582+
if (enable_arg.find("missingInclude") != std::string::npos) {
583+
--logMissingInclude;
576584
}
577585
}
578586

@@ -1234,6 +1242,9 @@ CmdLineParser::Result CmdLineParser::parseFromArgs(int argc, const char* const a
12341242
}
12351243
}
12361244

1245+
if (logMissingInclude == 1)
1246+
mLogger.printMessage("'--enable=information' will no longer implicitly enable 'missingInclude' starting with 2.16. Please enable it explicitly if you require it.");
1247+
12371248
if (!loadCppcheckCfg())
12381249
return Result::Fail;
12391250

test/testcmdlineparser.cpp

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ class TestCmdlineParser : public TestFixture {
172172
TEST_CASE(enabledInformation);
173173
TEST_CASE(enabledUnusedFunction);
174174
TEST_CASE(enabledMissingInclude);
175+
TEST_CASE(disabledMissingIncludeWithInformation);
176+
TEST_CASE(enabledMissingIncludeWithInformation);
177+
TEST_CASE(enabledMissingIncludeWithInformationReverseOrder);
175178
#ifdef CHECK_INTERNAL
176179
TEST_CASE(enabledInternal);
177180
#endif
@@ -839,6 +842,33 @@ class TestCmdlineParser : public TestFixture {
839842
ASSERT(settings->checks.isEnabled(Checks::missingInclude));
840843
}
841844

845+
void disabledMissingIncludeWithInformation() {
846+
REDIRECT;
847+
const char * const argv[] = {"cppcheck", "--disable=missingInclude", "--enable=information", "file.cpp"};
848+
ASSERT_EQUALS(CmdLineParser::Result::Success, parser->parseFromArgs(4, argv));
849+
ASSERT(settings->severity.isEnabled(Severity::information));
850+
ASSERT(!settings->checks.isEnabled(Checks::missingInclude));
851+
ASSERT_EQUALS("", logger->str());
852+
}
853+
854+
void enabledMissingIncludeWithInformation() {
855+
REDIRECT;
856+
const char * const argv[] = {"cppcheck", "--enable=information", "--enable=missingInclude", "file.cpp"};
857+
ASSERT_EQUALS(CmdLineParser::Result::Success, parser->parseFromArgs(4, argv));
858+
ASSERT(settings->severity.isEnabled(Severity::information));
859+
ASSERT(settings->checks.isEnabled(Checks::missingInclude));
860+
ASSERT_EQUALS("", logger->str());
861+
}
862+
863+
void enabledMissingIncludeWithInformationReverseOrder() {
864+
REDIRECT;
865+
const char * const argv[] = {"cppcheck", "--enable=missingInclude", "--enable=information", "file.cpp"};
866+
ASSERT_EQUALS(CmdLineParser::Result::Success, parser->parseFromArgs(4, argv));
867+
ASSERT(settings->severity.isEnabled(Severity::information));
868+
ASSERT(settings->checks.isEnabled(Checks::missingInclude));
869+
ASSERT_EQUALS("", logger->str());
870+
}
871+
842872
#ifdef CHECK_INTERNAL
843873
void enabledInternal() {
844874
REDIRECT;
@@ -940,7 +970,7 @@ class TestCmdlineParser : public TestFixture {
940970
ASSERT_EQUALS(CmdLineParser::Result::Success, parser->parseFromArgs(4, argv));
941971
ASSERT(settings->severity.isEnabled(Severity::information));
942972
ASSERT(!settings->checks.isEnabled(Checks::missingInclude));
943-
ASSERT_EQUALS("cppcheck: '--enable=information' will no longer implicitly enable 'missingInclude' starting with 2.16. Please enable it explicitly if you require it.\n", logger->str());
973+
ASSERT_EQUALS("", logger->str());
944974
}
945975

946976
void disableInformationPartial2() {

0 commit comments

Comments
 (0)