From 398122206e43c486b3493827e6347b0f9335f0a4 Mon Sep 17 00:00:00 2001 From: Arne Welzel Date: Thu, 2 Nov 2023 18:02:22 +0100 Subject: [PATCH] EventRegistry: Deprecate UsedHandlers() and UnusedHandlers() and check_for_unused_event_handlers: UsageAnalyzer is more thorough and the previous ones weren't extended to work with &is_used and should probably be considered superseded by the UsageAnalyzer even if that currently does not provide a public API and just prints out deprecation warnings. I'm also tempted to deprecate SetUsed() and Used() of EventHandler for the same reason. Closes #3187. --- scripts/base/init-bare.zeek | 2 +- src/EventRegistry.h | 4 ++-- src/stats.bif | 2 +- src/zeek-setup.cc | 3 +++ .../btest/Baseline/core.check-unused-event-handlers/.stderr | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/base/init-bare.zeek b/scripts/base/init-bare.zeek index 029dd46233..96ffb5f406 100644 --- a/scripts/base/init-bare.zeek +++ b/scripts/base/init-bare.zeek @@ -5192,7 +5192,7 @@ const likely_server_ports: set[port] &redef; const time_machine_profiling = F &redef &deprecated="Remove in v7.1. Unused."; ## If true, warns about unused event handlers at startup. -const check_for_unused_event_handlers = F &redef; +const check_for_unused_event_handlers = F &redef &deprecated="Remove in v7.1. This has been replaced by usage analyzer functionality."; ## Holds the filename of the trace file given with ``-w`` (empty if none). ## diff --git a/src/EventRegistry.h b/src/EventRegistry.h index f0740e9f17..f164dfe60e 100644 --- a/src/EventRegistry.h +++ b/src/EventRegistry.h @@ -68,8 +68,8 @@ public: // themselves. void SetErrorHandler(std::string_view name); - string_list UnusedHandlers(); - string_list UsedHandlers(); + [[deprecated("Remove in v7.1 - Unused handlers are now found via UsageAnalyzer.")]] string_list UnusedHandlers(); + [[deprecated("Remove in v7.1 - UsedHandlers() is unreliable - use AllHandlers().")]] string_list UsedHandlers(); string_list AllHandlers(); void PrintDebug(); diff --git a/src/stats.bif b/src/stats.bif index 6eee809f1c..02789b6622 100644 --- a/src/stats.bif +++ b/src/stats.bif @@ -489,7 +489,7 @@ function get_event_handler_stats%(%): EventNameStats auto rval = zeek::make_intrusive(zeek::id::find_type("EventNameStats")); const auto& recordType = zeek::id::find_type("EventNameCounter"); - const auto& events = event_registry->UsedHandlers(); + const auto& events = event_registry->AllHandlers(); for ( const auto& name : events ) { auto handler = event_registry->Lookup(name); diff --git a/src/zeek-setup.cc b/src/zeek-setup.cc index d215da56a8..4b45dbf57a 100644 --- a/src/zeek-setup.cc +++ b/src/zeek-setup.cc @@ -1008,7 +1008,10 @@ SetupResult setup(int argc, char** argv, Options* zopts) { if ( zeek_init ) event_mgr.Enqueue(zeek_init, Args{}); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" EventRegistry::string_list dead_handlers = event_registry->UnusedHandlers(); +#pragma GCC diagnostic pop if ( ! dead_handlers.empty() && check_for_unused_event_handlers ) { for ( const string& handler : dead_handlers ) diff --git a/testing/btest/Baseline/core.check-unused-event-handlers/.stderr b/testing/btest/Baseline/core.check-unused-event-handlers/.stderr index d3db972878..69f805dbf7 100644 --- a/testing/btest/Baseline/core.check-unused-event-handlers/.stderr +++ b/testing/btest/Baseline/core.check-unused-event-handlers/.stderr @@ -1,6 +1,7 @@ ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. ### NOTE: This file has been sorted with diff-sort. warning in <...>/check-unused-event-handlers.test, line 7: handler for non-existing event cannot be invoked (this_is_never_used) +warning in , line 1: deprecated (check_for_unused_event_handlers): Remove in v7.1. This has been replaced by usage analyzer functionality. warning in , line 1: event handler never invoked: Control::configuration_update warning in , line 1: event handler never invoked: Control::configuration_update_request warning in , line 1: event handler never invoked: Control::configuration_update_response