From f1749ab7adb5653d37cafa5bf59d11c1cc858447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Tue, 8 Aug 2023 22:58:02 +0200 Subject: [PATCH] CppcheckExecutor: use dedicated ErrorLogger for printing error messages XML (#4985) This starts to untangle the `ErrorLogger` implementation in `CppcheckExecutor` which handles three different cases and makes things unnecessarily complicated. --- cli/cppcheckexecutor.cpp | 26 ++++++++++++++++++-------- cli/cppcheckexecutor.h | 5 ----- 2 files changed, 18 insertions(+), 13 deletions(-) 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