From 662b7daf00a5c45d21c7fd2b05ebd50f19da8383 Mon Sep 17 00:00:00 2001 From: Bernhard Kirchen Date: Sat, 22 Nov 2025 21:55:14 +0100 Subject: [PATCH] CLI: make ERC report include violations with the expected severities the ERC report creates its own SHEETLIST_ERC_ITEMS_PROVIDER and hard-codes warnings and errors as wanted severities, regardless of the --severity-* options given through the CLI. we keep the marker provider optional and create a fallback instance for tests code that expects reports with warnings and errors. (cherry picked from commit 24dec03ba5dbaefc80a13c07e89aec4af87daa67) --- eeschema/eeschema_jobs_handler.cpp | 2 +- eeschema/erc/erc_report.cpp | 27 +++++++++++++++------------ eeschema/erc/erc_report.h | 4 +++- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/eeschema/eeschema_jobs_handler.cpp b/eeschema/eeschema_jobs_handler.cpp index 25e5619358..58cb850f07 100644 --- a/eeschema/eeschema_jobs_handler.cpp +++ b/eeschema/eeschema_jobs_handler.cpp @@ -1197,7 +1197,7 @@ int EESCHEMA_JOBS_HANDLER::JobSchErc( JOB* aJob ) markersProvider->GetCount() ), RPT_SEVERITY_INFO ); - ERC_REPORT reportWriter( sch, units ); + ERC_REPORT reportWriter( sch, units, markersProvider ); bool wroteReport = false; diff --git a/eeschema/erc/erc_report.cpp b/eeschema/erc/erc_report.cpp index 425d870070..ebcc88861b 100644 --- a/eeschema/erc/erc_report.cpp +++ b/eeschema/erc/erc_report.cpp @@ -34,10 +34,19 @@ #include -ERC_REPORT::ERC_REPORT( SCHEMATIC* aSchematic, EDA_UNITS aReportUnits ) : +ERC_REPORT::ERC_REPORT( SCHEMATIC* aSchematic, EDA_UNITS aReportUnits, + std::shared_ptr aMarkersProvider ) : m_sch( aSchematic ), - m_reportUnits( aReportUnits ) + m_reportUnits( aReportUnits ), + m_markersProvider( std::move( aMarkersProvider ) ) { + if( !m_markersProvider ) + { + // When no provider is supplied, fall back to creating one with default severities. + // This allows test code to get a basic report without needing to set up a provider. + m_markersProvider = std::make_shared( m_sch ); + m_markersProvider->SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); + } } @@ -59,14 +68,11 @@ wxString ERC_REPORT::GetTextReport() ERC_SETTINGS& settings = m_sch->ErcSettings(); - SHEETLIST_ERC_ITEMS_PROVIDER errors( m_sch ); - errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); - std::map> orderedItems; - for( int i = 0; i < errors.GetCount(); ++i ) + for( int i = 0; i < m_markersProvider->GetCount(); ++i ) { - if( auto item = dynamic_cast( errors.GetItem( i ).get() ) ) + if( auto item = dynamic_cast( m_markersProvider->GetItem( i ).get() ) ) { if( item->MainItemHasSheetPath() ) orderedItems[item->GetMainItemSheetPath()].emplace_back( item ); @@ -137,14 +143,11 @@ bool ERC_REPORT::WriteJsonReport( const wxString& aFullFileName ) ERC_SETTINGS& settings = m_sch->ErcSettings(); - SHEETLIST_ERC_ITEMS_PROVIDER errors( m_sch ); - errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); - std::map> orderedItems; - for( int i = 0; i < errors.GetCount(); ++i ) + for( int i = 0; i < m_markersProvider->GetCount(); ++i ) { - if( auto item = dynamic_cast( errors.GetItem( i ).get() ) ) + if( auto item = dynamic_cast( m_markersProvider->GetItem( i ).get() ) ) { if( item->MainItemHasSheetPath() ) orderedItems[item->GetMainItemSheetPath()].emplace_back( item ); diff --git a/eeschema/erc/erc_report.h b/eeschema/erc/erc_report.h index fc586b3ae2..300a7dc499 100644 --- a/eeschema/erc/erc_report.h +++ b/eeschema/erc/erc_report.h @@ -30,7 +30,8 @@ class RC_ITEMS_PROVIDER; class ERC_REPORT { public: - ERC_REPORT( SCHEMATIC* aSchematic, EDA_UNITS aReportUnits ); + ERC_REPORT( SCHEMATIC* aSchematic, EDA_UNITS aReportUnits, + std::shared_ptr aMarkersProvider = nullptr ); /** * Returns the ERC report in "text" (human readable) format @@ -56,6 +57,7 @@ public: private: SCHEMATIC* m_sch; EDA_UNITS m_reportUnits; + std::shared_ptr m_markersProvider; };