From 4a8c58f6ba9acd933c9719015c28a8822bfdd6cf Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Wed, 29 Nov 2023 21:34:59 +0100 Subject: [PATCH] Fix performance inefficiencies detected by Coverity Scan --- .../gnuradio_blocks/hybrid_observables_gs.cc | 2 +- .../telemetry_decoder/libs/tlm_crc_stats.cc | 2 +- .../tracking/gnuradio_blocks/kf_tracking.cc | 2 +- .../tracking/libs/bayesian_estimation.cc | 10 +++++----- .../tracking/libs/nonlinear_tracking.cc | 8 ++++---- src/core/monitor/serdes_gnss_synchro.h | 2 +- src/core/receiver/file_configuration.cc | 12 ++++++------ src/core/receiver/gnss_block_factory.cc | 8 ++++---- src/core/receiver/gnss_flowgraph.cc | 10 +++++----- src/core/receiver/in_memory_configuration.cc | 18 +++++++++--------- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.cc b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.cc index 8569dde24..3ce0ed6e9 100644 --- a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.cc +++ b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.cc @@ -768,7 +768,7 @@ int hybrid_observables_gs::general_work(int noutput_items __attribute__((unused) { n_valid++; } - epoch_data[n] = interpolated_gnss_synchro; + epoch_data[n] = std::move(interpolated_gnss_synchro); } if (d_T_rx_TOW_set) { diff --git a/src/algorithms/telemetry_decoder/libs/tlm_crc_stats.cc b/src/algorithms/telemetry_decoder/libs/tlm_crc_stats.cc index 2a57d55ac..4d6b9d9e6 100644 --- a/src/algorithms/telemetry_decoder/libs/tlm_crc_stats.cc +++ b/src/algorithms/telemetry_decoder/libs/tlm_crc_stats.cc @@ -44,7 +44,7 @@ bool Tlm_CRC_Stats::set_channel(int32_t channel) { std::string dump_filename_ = d_dump_crc_stats_filename.substr(d_dump_crc_stats_filename.find_last_of('/') + 1); dump_path = d_dump_crc_stats_filename.substr(0, d_dump_crc_stats_filename.find_last_of('/')); - d_dump_crc_stats_filename = dump_filename_; + d_dump_crc_stats_filename = std::move(dump_filename_); } else { diff --git a/src/algorithms/tracking/gnuradio_blocks/kf_tracking.cc b/src/algorithms/tracking/gnuradio_blocks/kf_tracking.cc index eb21fe31f..2a7900f20 100644 --- a/src/algorithms/tracking/gnuradio_blocks/kf_tracking.cc +++ b/src/algorithms/tracking/gnuradio_blocks/kf_tracking.cc @@ -2075,7 +2075,7 @@ int kf_tracking::general_work(int noutput_items __attribute__((unused)), gr_vect { current_synchro_data.fs = static_cast(d_trk_parameters.fs_in); current_synchro_data.Tracking_sample_counter = d_sample_counter; - *out[0] = current_synchro_data; + *out[0] = std::move(current_synchro_data); return 1; } return 0; diff --git a/src/algorithms/tracking/libs/bayesian_estimation.cc b/src/algorithms/tracking/libs/bayesian_estimation.cc index e0536e50f..1823efcb3 100644 --- a/src/algorithms/tracking/libs/bayesian_estimation.cc +++ b/src/algorithms/tracking/libs/bayesian_estimation.cc @@ -29,7 +29,7 @@ */ #include "bayesian_estimation.h" - +#include Bayesian_estimator::Bayesian_estimator() : kappa_prior(0), @@ -122,10 +122,10 @@ void Bayesian_estimator::update_sequential(const arma::vec& data) Psi_est = Psi_posterior / (nu_posterior + ny + 1); } - mu_prior = mu_posterior; + mu_prior = std::move(mu_posterior); kappa_prior = kappa_posterior; nu_prior = nu_posterior; - Psi_prior = Psi_posterior; + Psi_prior = std::move(Psi_posterior); } @@ -161,10 +161,10 @@ void Bayesian_estimator::update_sequential(const arma::vec& data, const arma::ve Psi_est = Psi_posterior / (nu_posterior + ny + 1); } - mu_prior = mu_posterior; + mu_prior = std::move(mu_posterior); kappa_prior = kappa_posterior; nu_prior = nu_posterior; - Psi_prior = Psi_posterior; + Psi_prior = std::move(Psi_posterior); } diff --git a/src/algorithms/tracking/libs/nonlinear_tracking.cc b/src/algorithms/tracking/libs/nonlinear_tracking.cc index d4f5609db..200c22f5d 100644 --- a/src/algorithms/tracking/libs/nonlinear_tracking.cc +++ b/src/algorithms/tracking/libs/nonlinear_tracking.cc @@ -104,8 +104,8 @@ void CubatureFilter::predict_sequential(const arma::vec& x_post, const arma::mat P_x_pred = P_x_pred / static_cast(np) - x_pred * x_pred.t() + noise_covariance; // Store predicted mean and error covariance - x_pred_out = x_pred; - P_x_pred_out = P_x_pred; + x_pred_out = std::move(x_pred); + P_x_pred_out = std::move(P_x_pred); } @@ -270,8 +270,8 @@ void UnscentedFilter::predict_sequential(const arma::vec& x_post, const arma::ma P_x_pred = P_x_pred + noise_covariance; // Store predicted mean and error covariance - x_pred_out = x_pred; - P_x_pred_out = P_x_pred; + x_pred_out = std::move(x_pred); + P_x_pred_out = std::move(P_x_pred); } diff --git a/src/core/monitor/serdes_gnss_synchro.h b/src/core/monitor/serdes_gnss_synchro.h index 35bbed909..9f45df031 100644 --- a/src/core/monitor/serdes_gnss_synchro.h +++ b/src/core/monitor/serdes_gnss_synchro.h @@ -73,7 +73,7 @@ public: { observables.Clear(); std::string data; - for (auto gs : vgs) + for (const auto& gs : vgs) { gnss_sdr::GnssSynchro* obs = observables.add_observable(); char c = gs.System; diff --git a/src/core/receiver/file_configuration.cc b/src/core/receiver/file_configuration.cc index 3c34d54bc..5e8fff282 100644 --- a/src/core/receiver/file_configuration.cc +++ b/src/core/receiver/file_configuration.cc @@ -95,7 +95,7 @@ int64_t FileConfiguration::property(std::string property_name, int64_t default_v return overrided_->property(property_name, default_value); } const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } @@ -106,7 +106,7 @@ uint64_t FileConfiguration::property(std::string property_name, uint64_t default return overrided_->property(property_name, default_value); } const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } @@ -117,7 +117,7 @@ int FileConfiguration::property(std::string property_name, int default_value) co return overrided_->property(property_name, default_value); } const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } @@ -128,7 +128,7 @@ unsigned int FileConfiguration::property(std::string property_name, unsigned int return overrided_->property(property_name, default_value); } const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } @@ -161,7 +161,7 @@ float FileConfiguration::property(std::string property_name, float default_value return overrided_->property(property_name, default_value); } const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } @@ -178,7 +178,7 @@ double FileConfiguration::property(std::string property_name, double default_val void FileConfiguration::set_property(std::string property_name, std::string value) { - overrided_->set_property(property_name, value); + overrided_->set_property(std::move(property_name), std::move(value)); } diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index e1a6d3f15..5742bca83 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -192,16 +192,16 @@ auto const item_prop = ".item_type"s; // "item_type" property template std::unique_ptr dynamic_unique_cast(std::unique_ptr&& p) { - std::unique_ptr result; - if (To* cast = dynamic_cast(p.get())) { - result.reset(cast); + std::unique_ptr result(cast); p.release(); // NOLINT(bugprone-unused-return-value) + return result; } - return result; + return std::unique_ptr(nullptr); } + auto findRole(ConfigurationInterface const* configuration, std::string const& base, int ID) -> std::string { auto role = base + std::to_string(ID); diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc index 0770b305d..1c913a8fc 100644 --- a/src/core/receiver/gnss_flowgraph.cc +++ b/src/core/receiver/gnss_flowgraph.cc @@ -2190,7 +2190,7 @@ void GNSSFlowgraph::set_signals_list() if (!tmp_set.empty()) { - available_galileo_prn = tmp_set; + available_galileo_prn = std::move(tmp_set); } } @@ -2230,7 +2230,7 @@ void GNSSFlowgraph::set_signals_list() if (!tmp_set.empty()) { - available_gps_prn = tmp_set; + available_gps_prn = std::move(tmp_set); } } @@ -2270,7 +2270,7 @@ void GNSSFlowgraph::set_signals_list() if (!tmp_set.empty()) { - available_sbas_prn = tmp_set; + available_sbas_prn = std::move(tmp_set); } } @@ -2310,7 +2310,7 @@ void GNSSFlowgraph::set_signals_list() if (!tmp_set.empty()) { - available_glonass_prn = tmp_set; + available_glonass_prn = std::move(tmp_set); } } @@ -2350,7 +2350,7 @@ void GNSSFlowgraph::set_signals_list() if (!tmp_set.empty()) { - available_beidou_prn = tmp_set; + available_beidou_prn = std::move(tmp_set); } } diff --git a/src/core/receiver/in_memory_configuration.cc b/src/core/receiver/in_memory_configuration.cc index df46b0053..b3cde9946 100644 --- a/src/core/receiver/in_memory_configuration.cc +++ b/src/core/receiver/in_memory_configuration.cc @@ -47,63 +47,63 @@ std::string InMemoryConfiguration::property(std::string property_name, std::stri bool InMemoryConfiguration::property(std::string property_name, bool default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } int64_t InMemoryConfiguration::property(std::string property_name, int64_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } uint64_t InMemoryConfiguration::property(std::string property_name, uint64_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } int32_t InMemoryConfiguration::property(std::string property_name, int32_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } uint32_t InMemoryConfiguration::property(std::string property_name, uint32_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } uint16_t InMemoryConfiguration::property(std::string property_name, uint16_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } int16_t InMemoryConfiguration::property(std::string property_name, int16_t default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } float InMemoryConfiguration::property(std::string property_name, float default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); } double InMemoryConfiguration::property(std::string property_name, double default_value) const { const std::string empty; - return converter_->convert(property(property_name, empty), default_value); + return converter_->convert(property(std::move(property_name), empty), default_value); }