diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index 38c365d17..eabf05820 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 9b73eb5d7..23e845e0e 100644 --- a/cli/cppcheckexecutor.h +++ b/cli/cppcheckexecutor.h @@ -180,11 +180,6 @@ private: * Error output */ std::ofstream* mErrorOutput{}; - - /** - * Has --errorlist been given? - */ - bool mShowAllErrors{}; }; #endif // CPPCHECKEXECUTOR_H