This commit is contained in:
Daniel Marjamäki 2018-02-06 08:59:36 +01:00
parent 80c2074ea7
commit 71511f3131
8 changed files with 18 additions and 13 deletions

View File

@ -2108,7 +2108,7 @@ bool CheckBufferOverrun::analyseWholeProgram(const std::list<Check::FileInfo*> &
errors = true; errors = true;
} }
} }
return errors && errorLogger.hasErrors(); return errors;
} }
unsigned int CheckBufferOverrun::sizeOfType(const Token *type) const unsigned int CheckBufferOverrun::sizeOfType(const Token *type) const

View File

@ -1606,5 +1606,5 @@ bool CheckUninitVar::analyseWholeProgram(const std::list<Check::FileInfo*> &file
} }
} }
return foundErrors && errorLogger.hasErrors(); return foundErrors;
} }

View File

@ -264,7 +264,7 @@ bool CheckUnusedFunctions::check(ErrorLogger * const errorLogger, const Settings
*/ */
} }
} }
return errors && errorLogger->hasErrors(); return errors;
} }
void CheckUnusedFunctions::unusedFunctionError(ErrorLogger * const errorLogger, void CheckUnusedFunctions::unusedFunctionError(ErrorLogger * const errorLogger,

View File

@ -815,7 +815,7 @@ bool CppCheck::analyseWholeProgram()
// Analyse the tokens // Analyse the tokens
for (std::list<Check *>::const_iterator it = Check::instances().begin(); it != Check::instances().end(); ++it) for (std::list<Check *>::const_iterator it = Check::instances().begin(); it != Check::instances().end(); ++it)
errors |= (*it)->analyseWholeProgram(fileInfo, _settings, *this); errors |= (*it)->analyseWholeProgram(fileInfo, _settings, *this);
return errors; return errors && (exitcode > 0);
} }
void CppCheck::analyseWholeProgram(const std::string &buildDir, const std::map<std::string, std::size_t> &files) void CppCheck::analyseWholeProgram(const std::string &buildDir, const std::map<std::string, std::size_t> &files)

View File

@ -191,8 +191,6 @@ private:
*/ */
virtual void reportErr(const ErrorLogger::ErrorMessage &msg); virtual void reportErr(const ErrorLogger::ErrorMessage &msg);
virtual bool hasErrors() const { return exitcode > 0; }
/** /**
* @brief Information about progress is directed here. * @brief Information about progress is directed here.
* *

View File

@ -331,12 +331,6 @@ public:
*/ */
virtual void reportErr(const ErrorLogger::ErrorMessage &msg) = 0; virtual void reportErr(const ErrorLogger::ErrorMessage &msg) = 0;
/**
* Returns true if an error has been reported which should
* cause a non-zero cppcheck exit code.
*/
virtual bool hasErrors() const { return false; }
/** /**
* Report progress to client * Report progress to client
* @param filename main file that is checked * @param filename main file that is checked

View File

@ -52,6 +52,8 @@ private:
TEST_CASE(suppressionWithRelativePaths); // #4733 TEST_CASE(suppressionWithRelativePaths); // #4733
TEST_CASE(suppressingSyntaxErrors); // #7076 TEST_CASE(suppressingSyntaxErrors); // #7076
TEST_CASE(suppressingSyntaxErrorsInline); // #5917 TEST_CASE(suppressingSyntaxErrorsInline); // #5917
TEST_CASE(unusedFunction);
} }
void suppressionsBadId1() const { void suppressionsBadId1() const {
@ -149,7 +151,10 @@ private:
CppCheck cppCheck(*this, true); CppCheck cppCheck(*this, true);
Settings& settings = cppCheck.settings(); Settings& settings = cppCheck.settings();
settings.exitCode = 1;
settings.inlineSuppressions = true; settings.inlineSuppressions = true;
if (suppression == "unusedFunction")
settings.addEnabled("unusedFunction");
settings.addEnabled("information"); settings.addEnabled("information");
settings.jointSuppressionReport = true; settings.jointSuppressionReport = true;
if (!suppression.empty()) { if (!suppression.empty()) {
@ -435,6 +440,10 @@ private:
checkSuppression(files, ""); checkSuppression(files, "");
ASSERT_EQUALS("", errout.str()); ASSERT_EQUALS("", errout.str());
} }
void unusedFunction() {
ASSERT_EQUALS(0, checkSuppression("void f() {}", "unusedFunction"));
}
}; };
REGISTER_TEST(TestSuppressions) REGISTER_TEST(TestSuppressions)

View File

@ -77,7 +77,11 @@ private:
// Check for unused functions.. // Check for unused functions..
CheckUnusedFunctions checkUnusedFunctions(&tokenizer, &settings, this); CheckUnusedFunctions checkUnusedFunctions(&tokenizer, &settings, this);
checkUnusedFunctions.parseTokens(tokenizer, "someFile.c", &settings); checkUnusedFunctions.parseTokens(tokenizer, "someFile.c", &settings);
ASSERT(!checkUnusedFunctions.check(this, settings)); // check() returns error if and only if errout is not empty.
if (checkUnusedFunctions.check(this, settings))
ASSERT(errout.str() != "");
else
ASSERT_EQUALS("", errout.str());
} }
void incondition() { void incondition() {