diff --git a/cli/cppcheckexecutor.cpp b/cli/cppcheckexecutor.cpp index 249ad06b6..d6ed1f20a 100644 --- a/cli/cppcheckexecutor.cpp +++ b/cli/cppcheckexecutor.cpp @@ -1035,11 +1035,6 @@ static inline std::string ansiToOEM(const std::string &msg, bool doConvert) void CppCheckExecutor::reportErr(const std::string &errmsg) { - // Alert only about unique errors - if (mShownErrors.find(errmsg) != mShownErrors.end()) - return; - - mShownErrors.insert(errmsg); if (mErrorOutput) *mErrorOutput << errmsg << std::endl; else { @@ -1096,11 +1091,17 @@ void CppCheckExecutor::reportErr(const ErrorMessage &msg) { if (mShowAllErrors) { reportOut(msg.toXML()); - } else if (mSettings->xml) { - reportErr(msg.toXML()); - } else { - reportErr(msg.toString(mSettings->verbose, mSettings->templateFormat, mSettings->templateLocation)); + return; } + + // Alert only about unique errors + if (!mShownErrors.insert(msg.toString(mSettings->verbose)).second) + return; + + if (mSettings->xml) + reportErr(msg.toXML()); + else + reportErr(msg.toString(mSettings->verbose, mSettings->templateFormat, mSettings->templateLocation)); } void CppCheckExecutor::bughuntingReport(const std::string &str)