Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
danmar committed Oct 24, 2024
1 parent 614ac98 commit ab803c7
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
33 changes: 16 additions & 17 deletions cli/cppcheckexecutor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,10 +463,7 @@ int CppCheckExecutor::check_internal(const Settings& settings) const
cppcheck.tooManyConfigsError(emptyString,0U);
}

if (settings.safety || settings.severity.isEnabled(Severity::information) || !settings.checkersReportFilename.empty())
stdLogger.writeCheckersReport();
if (settings.xml_version == 3)
stdLogger.writeXmlCheckersReport();
stdLogger.writeCheckersReport();

if (settings.xml) {
stdLogger.reportErr(ErrorMessage::getXMLFooter(settings.xml_version));
Expand All @@ -482,15 +479,21 @@ int CppCheckExecutor::check_internal(const Settings& settings) const

void StdLogger::writeCheckersReport()
{
const bool summary = mSettings.safety || mSettings.severity.isEnabled(Severity::information);
const bool xmlReport = mSettings.xml && mSettings.xml_version == 3;
const bool textReport = !mSettings.checkersReportFilename.empty();

if (!summary && !xmlReport && !textReport)
return;

CheckersReport checkersReport(mSettings, mActiveCheckers);

bool suppressed = false;
for (const SuppressionList::Suppression& s : mSettings.supprs.nomsg.getSuppressions()) {
if (s.errorId == "checkersReport")
suppressed = true;
}
const auto& suppressions = mSettings.supprs.nomsg.getSuppressions();
const bool summarySuppressed = std::any_of(suppressions.cbegin(), suppressions.cend(), [](const SuppressionList::Suppression& s) {
return s.errorId == "checkersReport";
});

if (!suppressed) {
if (summary && !summarySuppressed) {
ErrorMessage msg;
msg.severity = Severity::information;
msg.id = "checkersReport";
Expand All @@ -503,25 +506,21 @@ void StdLogger::writeCheckersReport()
what = std::to_string(activeCheckers) + "/" + std::to_string(totalCheckers);
else
what = "There was critical errors";
if (mSettings.checkersReportFilename.empty())
if (!xmlReport && !textReport)
what += " (use --checkers-report=<filename> to see details)";
msg.setmsg("Active checkers: " + what);

reportErr(msg);
}

if (!mSettings.checkersReportFilename.empty()) {
if (textReport) {
std::ofstream fout(mSettings.checkersReportFilename);
if (fout.is_open())
fout << checkersReport.getReport(mCriticalErrors);
}
}

void StdLogger::writeXmlCheckersReport()
{
if (mSettings.xml && mSettings.xml_version == 3) {
if (xmlReport) {
reportErr(" </errors>\n");
const CheckersReport checkersReport(mSettings, mActiveCheckers);
reportErr(checkersReport.getXmlReport(mCriticalErrors));
}
}
Expand Down
6 changes: 6 additions & 0 deletions test/testerrorlogger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,12 @@ class TestErrorLogger : public TestFixture {
}

void ToXmlV3() const {
std::string header("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<results version=\"3\">\n");
header += " <cppcheck version=\"";
header += CppCheck::version();
header += "\"/>\n <errors>";
ASSERT_EQUALS(header, ErrorMessage::getXMLHeader("", 3));

ASSERT_EQUALS("</results>", ErrorMessage::getXMLFooter(3));
}

Expand Down

0 comments on commit ab803c7

Please sign in to comment.