diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index 38c365d17f8..eabf0582022 100644 --- a/cli/cppcheckexecutor.cpp +++ b/cli/cppcheckexecutor.cpp @@ -67,8 +67,23 @@ #include #endif -// TODO: do not directly write to stdout +class XMLErrorMessagesLogger : public ErrorLogger +{ + void reportOut(const std::string & outmsg, Color /*c*/ = Color::Reset) override + { + std::cout << outmsg << std::endl; + } + + void reportErr(const ErrorMessage &msg) override + { + reportOut(msg.toXML()); + } + + void reportProgress(const std::string & /*filename*/, const char /*stage*/[], const std::size_t /*value*/) override + {} +}; +// TODO: do not directly write to stdout /*static*/ FILE* CppCheckExecutor::mExceptionOutput = stdout; @@ -97,9 +112,9 @@ bool CppCheckExecutor::parseFromArgs(Settings &settings, int argc, const char* c } if (parser.getShowErrorMessages()) { - mShowAllErrors = true; + XMLErrorMessagesLogger xmlLogger; std::cout << ErrorMessage::getXMLHeader(settings.cppcheckCfgProductName); - CppCheck::getErrorMessages(*this); + CppCheck::getErrorMessages(xmlLogger); std::cout << ErrorMessage::getXMLFooter() << std::endl; } @@ -409,11 +424,6 @@ void CppCheckExecutor::reportProgress(const std::string &filename, const char st void CppCheckExecutor::reportErr(const ErrorMessage &msg) { - if (mShowAllErrors) { - reportOut(msg.toXML()); - return; - } - assert(mSettings != nullptr); // Alert only about unique errors diff --git a/cli/cppcheckexecutor.h b/cli/cppcheckexecutor.h index 9b73eb5d7e6..23e845e0e6f 100644 --- a/cli/cppcheckexecutor.h +++ b/cli/cppcheckexecutor.h @@ -180,11 +180,6 @@ class CppCheckExecutor : public ErrorLogger { * Error output */ std::ofstream* mErrorOutput{}; - - /** - * Has --errorlist been given? - */ - bool mShowAllErrors{}; }; #endif // CPPCHECKEXECUTOR_H