This is an automated email from the ASF dual-hosted git repository. lordgamez pushed a commit to branch MINIFICPP-2629 in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 1bfbf4f2a835213315d51a2190b1e8ac5ce30b1c Author: Gabor Gyimesi <[email protected]> AuthorDate: Mon Sep 15 15:34:52 2025 +0200 Fix clang tidy --- .clang-tidy | 1 + core-framework/src/io/FileStream.cpp | 5 ++--- core-framework/src/utils/ByteArrayCallback.cpp | 6 +++--- core-framework/src/utils/Id.cpp | 4 ++-- core-framework/src/utils/OsUtils.cpp | 6 +++--- core-framework/src/utils/SystemCpuUsageTracker.cpp | 4 ++-- .../src/serialization/FlowFileV3Serializer.cpp | 2 +- .../src/utils/ListingStateManager.cpp | 4 ++-- extensions/aws/processors/PutS3Object.cpp | 4 ++-- .../azure/processors/FetchAzureDataLakeStorage.cpp | 6 +++--- .../azure/processors/PutAzureDataLakeStorage.cpp | 2 +- extensions/civetweb/processors/ListenHTTP.cpp | 2 +- extensions/execute-process/ExecuteProcess.cpp | 2 +- .../tests/GCPCredentialsControllerServiceTests.cpp | 2 +- extensions/kafka/PublishKafka.cpp | 6 +++--- extensions/libarchive/FocusArchiveEntry.cpp | 1 - extensions/libarchive/tests/MergeFileTests.cpp | 8 ++++---- extensions/libarchive/tests/util/ArchiveTests.cpp | 2 +- extensions/lua/LuaScriptFlowFile.cpp | 8 ++++---- extensions/lua/LuaScriptFlowFile.h | 4 ++-- extensions/opc/include/opc.h | 2 +- extensions/opc/src/opc.cpp | 3 +-- extensions/rocksdb-repos/tests/ProvenanceTests.cpp | 2 +- extensions/sftp/processors/ListSFTP.cpp | 8 ++++---- extensions/sftp/processors/ListSFTP.h | 4 ++-- extensions/sftp/processors/SFTPProcessorBase.cpp | 8 ++------ extensions/sftp/tests/ListThenFetchSFTPTests.cpp | 2 +- extensions/sql/data/SQLRowsetProcessor.cpp | 19 +++++-------------- extensions/sql/processors/QueryDatabaseTable.cpp | 2 +- .../processors/AttributeRollingWindow.cpp | 2 +- .../processors/AttributesToJSON.cpp | 4 ++-- .../processors/DefragmentText.cpp | 2 +- .../standard-processors/processors/PutFile.cpp | 12 ++++++++---- .../standard-processors/processors/PutUDP.cpp | 2 +- .../standard-processors/processors/SplitText.cpp | 4 ++-- .../tests/unit/RouteTextTests.cpp | 2 +- .../tests/unit/SplitTextTests.cpp | 2 +- .../tests/unit/YamlConnectionParserTest.cpp | 1 - extensions/standard-processors/utils/JoltUtils.cpp | 21 +++++++++++---------- extensions/standard-processors/utils/JoltUtils.h | 2 +- extensions/systemd/ConsumeJournald.cpp | 2 +- extensions/systemd/libwrapper/LibWrapper.cpp | 10 ++-------- extensions/systemd/libwrapper/LibWrapper.h | 10 ++-------- extensions/systemd/tests/ConsumeJournaldTest.cpp | 2 +- .../core/logging/internal/ActiveCompressor.h | 16 ++-------------- libminifi/include/core/state/UpdateController.h | 17 +++-------------- libminifi/src/FlowFileRecord.cpp | 6 +++--- libminifi/src/RemoteProcessorGroupPort.cpp | 15 +++++---------- libminifi/src/ResourceClaim.cpp | 2 +- libminifi/src/ThreadedSchedulingAgent.cpp | 2 +- libminifi/src/c2/C2Agent.cpp | 7 +++---- libminifi/src/core/ClassLoader.cpp | 4 ++-- libminifi/src/core/ProcessSession.cpp | 9 +++++---- libminifi/src/core/ProcessSessionReadCallback.cpp | 2 +- .../core/logging/internal/CompressionManager.cpp | 2 +- .../reporting/SiteToSiteProvenanceReportingTask.cpp | 2 +- libminifi/src/core/state/UpdateController.cpp | 12 ++---------- libminifi/src/provenance/Provenance.cpp | 2 +- libminifi/src/sitetosite/RawSocketProtocol.cpp | 2 +- libminifi/src/sitetosite/SiteToSiteClient.cpp | 4 ++-- libminifi/test/flow-tests/FlowControllerTests.cpp | 2 +- libminifi/test/libtest/integration/HTTPHandlers.cpp | 4 ++-- .../libtest/unit/SingleProcessorTestController.cpp | 4 ++-- .../libtest/unit/SingleProcessorTestController.h | 4 ++-- libminifi/test/libtest/unit/TestUtils.cpp | 14 +++++++------- .../libtest/unit/WriteToFlowFileTestProcessor.h | 4 ++-- libminifi/test/unit/EnvironmentUtilsTests.cpp | 5 +++-- libminifi/test/unit/ExtendedKeyUsageTests.cpp | 18 +++++++++--------- libminifi/test/unit/FlowFileQueueSwapTests.cpp | 18 +++++++++--------- libminifi/test/unit/ResponseNodeLoaderTests.cpp | 2 +- 70 files changed, 164 insertions(+), 222 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 63fb7029d..50c7f52a2 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,7 @@ Checks: > -clang-analyzer-optin.cplusplus.VirtualCall, -clang-analyzer-optin.core.EnumCastOutOfRange, + -clang-analyzer-unix.BlockInCriticalSection, boost-use-to-string, portability-restrict-system-includes, portability-simd-intrinsics, diff --git a/core-framework/src/io/FileStream.cpp b/core-framework/src/io/FileStream.cpp index da9b2e9c0..d2154d43b 100644 --- a/core-framework/src/io/FileStream.cpp +++ b/core-framework/src/io/FileStream.cpp @@ -21,6 +21,7 @@ #include <vector> #include <string> #include <utility> +#include <algorithm> #include "minifi-cpp/Exception.h" #include "io/validation.h" @@ -124,9 +125,7 @@ size_t FileStream::write(const uint8_t *value, size_t size) { return STREAM_ERROR; } offset_ += size; - if (offset_ > length_) { - length_ = offset_; - } + length_ = std::max(offset_, length_); if (!file_stream_->flush()) { logger_->log_error("{}{}", WRITE_ERROR_MSG, FLUSH_CALL_ERROR_MSG); return STREAM_ERROR; diff --git a/core-framework/src/utils/ByteArrayCallback.cpp b/core-framework/src/utils/ByteArrayCallback.cpp index 823e415ae..8446e9a27 100644 --- a/core-framework/src/utils/ByteArrayCallback.cpp +++ b/core-framework/src/utils/ByteArrayCallback.cpp @@ -100,7 +100,7 @@ size_t ByteOutputCallback::read_current_str(char *buffer, size_t size) { read_started_ = true; do { std::lock_guard<std::recursive_mutex> lock(vector_lock_); - if (current_str_pos <= current_str.length() && current_str.length() > 0) { + if (current_str_pos <= current_str.length() && !current_str.empty()) { size_t str_remaining = current_str.length() - current_str_pos; size_t current_str_read = str_remaining; if (str_remaining > amount_to_read) { @@ -137,9 +137,9 @@ size_t ByteOutputCallback::read_current_str(char *buffer, size_t size) { bool ByteOutputCallback::preload_next_str() { // wait until there is data or this stream has been stopped. - if (queue_.size_approx() == 0 && current_str.length() == 0) { + if (queue_.size_approx() == 0 && current_str.empty()) { std::unique_lock<std::recursive_mutex> lock(vector_lock_); - if (queue_.size_approx() == 0 && current_str.length() == 0) { + if (queue_.size_approx() == 0 && current_str.empty()) { spinner_.wait(lock, [&] { return queue_.size_approx() > 0 || !is_alive_;}); } diff --git a/core-framework/src/utils/Id.cpp b/core-framework/src/utils/Id.cpp index 62d810b3c..3037827f1 100644 --- a/core-framework/src/utils/Id.cpp +++ b/core-framework/src/utils/Id.cpp @@ -170,8 +170,8 @@ std::optional<Identifier> Identifier::parse(const std::string &str) { bool Identifier::parseByte(Data &data, const uint8_t *input, int &charIdx, int &byteIdx) { uint8_t upper = 0; uint8_t lower = 0; - if (!string::from_hex(input[charIdx++], upper) - || !string::from_hex(input[charIdx++], lower)) { + if (!string::from_hex(input[charIdx++], upper) // NOLINT(bugprone-inc-dec-in-conditions) + || !string::from_hex(input[charIdx++], lower)) { // NOLINT(bugprone-inc-dec-in-conditions) return false; } data[byteIdx++] = (upper << 4) | lower; diff --git a/core-framework/src/utils/OsUtils.cpp b/core-framework/src/utils/OsUtils.cpp index cac91c2c5..6aa43ca59 100644 --- a/core-framework/src/utils/OsUtils.cpp +++ b/core-framework/src/utils/OsUtils.cpp @@ -177,7 +177,7 @@ int64_t OsUtils::getCurrentProcessPhysicalMemoryUsage() { std::string line; while (std::getline(status_file, line)) { - if (line.rfind(resident_set_size_prefix, 0) == 0) { + if (line.starts_with(resident_set_size_prefix)) { std::istringstream resident_set_size_value(line.substr(resident_set_size_prefix.length())); uint64_t memory_usage_in_kBytes = 0; resident_set_size_value >> memory_usage_in_kBytes; @@ -221,11 +221,11 @@ int64_t OsUtils::getSystemPhysicalMemoryUsage() { std::optional<uint64_t> total_memory_kByte; std::optional<uint64_t> available_memory_kByte; while ((!total_memory_kByte.has_value() || !available_memory_kByte.has_value()) && std::getline(meminfo_file, line)) { - if (line.rfind(total_memory_prefix, 0) == 0) { + if (line.starts_with(total_memory_prefix)) { std::istringstream total_memory_line(line.substr(total_memory_prefix.length())); total_memory_kByte.emplace(0); total_memory_line >> total_memory_kByte.value(); - } else if (line.rfind(available_memory_prefix, 0) == 0) { + } else if (line.starts_with(available_memory_prefix)) { std::istringstream available_memory_line(line.substr(available_memory_prefix.length())); available_memory_kByte.emplace(0); available_memory_line >> available_memory_kByte.value(); diff --git a/core-framework/src/utils/SystemCpuUsageTracker.cpp b/core-framework/src/utils/SystemCpuUsageTracker.cpp index 46757000d..39cc663f8 100644 --- a/core-framework/src/utils/SystemCpuUsageTracker.cpp +++ b/core-framework/src/utils/SystemCpuUsageTracker.cpp @@ -44,7 +44,7 @@ void SystemCpuUsageTracker::queryCpuTimes() { previous_total_sys_ = total_sys_; previous_total_idle_ = total_idle_; gsl::owner<FILE*> file = fopen("/proc/stat", "r"); - if (fscanf(file, "cpu %lu %lu %lu %lu", &total_user_, &total_user_low_, &total_sys_, &total_idle_) != 4) { // NOLINT(cert-err34-c) + if (fscanf(file, "cpu %lu %lu %lu %lu", &total_user_, &total_user_low_, &total_sys_, &total_idle_) != 4) { // NOLINT(cert-err34-c,clang-analyzer-unix.Stream) total_user_ = previous_total_user_; total_user_low_ = previous_total_user_low_; total_idle_ = previous_total_idle_; @@ -76,7 +76,7 @@ double SystemCpuUsageTracker::getCpuUsageBetweenLastTwoQueries() const { if (total_diff + total_idle_diff == 0) { return -1.0; } - double percent = static_cast<double>(total_diff) / static_cast<double>(total_diff + total_idle_diff); + double percent = static_cast<double>(total_diff) / static_cast<double>(total_diff + total_idle_diff); // NOLINT(clang-analyzer-optin.taint.TaintedDiv) return percent; } diff --git a/extension-framework/src/serialization/FlowFileV3Serializer.cpp b/extension-framework/src/serialization/FlowFileV3Serializer.cpp index 69e0dd40d..972092ce4 100644 --- a/extension-framework/src/serialization/FlowFileV3Serializer.cpp +++ b/extension-framework/src/serialization/FlowFileV3Serializer.cpp @@ -84,7 +84,7 @@ int64_t FlowFileV3Serializer::serialize(const std::shared_ptr<core::FlowFile>& f } } { - const auto ret = out->write(static_cast<uint64_t>(flowFile->getSize())); + const auto ret = out->write(flowFile->getSize()); if (io::isError(ret)) return -1; sum += ret; } diff --git a/extension-framework/src/utils/ListingStateManager.cpp b/extension-framework/src/utils/ListingStateManager.cpp index c2f07b1d0..d56a8f445 100644 --- a/extension-framework/src/utils/ListingStateManager.cpp +++ b/extension-framework/src/utils/ListingStateManager.cpp @@ -27,7 +27,7 @@ static const std::string LATEST_LISTED_OBJECT_TIMESTAMP = "listed_timestamp"; bool ListingState::wasObjectListedAlready(const ListedObject &object) const { return listed_key_timestamp > object.getLastModified() || - (listed_key_timestamp == object.getLastModified() && listed_keys.find(object.getKey()) != listed_keys.end()); + (listed_key_timestamp == object.getLastModified() && listed_keys.contains(object.getKey())); } void ListingState::updateState(const ListedObject &object) { @@ -62,7 +62,7 @@ uint64_t ListingStateManager::getLatestListedKeyTimestampInMilliseconds(const st std::unordered_set<std::string> ListingStateManager::getLatestListedKeys(const std::unordered_map<std::string, std::string> &state) { std::unordered_set<std::string> latest_listed_keys; for (const auto& kvp : state) { - if (kvp.first.rfind(LATEST_LISTED_OBJECT_PREFIX, 0) == 0) { + if (kvp.first.starts_with(LATEST_LISTED_OBJECT_PREFIX)) { latest_listed_keys.insert(kvp.second); } } diff --git a/extensions/aws/processors/PutS3Object.cpp b/extensions/aws/processors/PutS3Object.cpp index 55502f7d3..68ddd5e47 100644 --- a/extensions/aws/processors/PutS3Object.cpp +++ b/extensions/aws/processors/PutS3Object.cpp @@ -69,13 +69,13 @@ void PutS3Object::onSchedule(core::ProcessContext& context, core::ProcessSession } multipart_threshold_ = context.getProperty(MultipartThreshold) - | minifi::utils::andThen([&](const auto str) { return parsing::parseDataSizeMinMax(str, getMinPartSize(), getMaxUploadSize()); }) + | minifi::utils::andThen([&](const auto& str) { return parsing::parseDataSizeMinMax(str, getMinPartSize(), getMaxUploadSize()); }) | minifi::utils::orThrow("Multipart Part Size is not between the valid 5MB and 5GB range!"); logger_->log_debug("PutS3Object: Multipart Threshold {}", multipart_threshold_); multipart_size_ = context.getProperty(MultipartPartSize) - | minifi::utils::andThen([&](const auto str) { return parsing::parseDataSizeMinMax(str, getMinPartSize(), getMaxUploadSize()); }) + | minifi::utils::andThen([&](const auto& str) { return parsing::parseDataSizeMinMax(str, getMinPartSize(), getMaxUploadSize()); }) | minifi::utils::orThrow("Multipart Part Size is not between the valid 5MB and 5GB range!"); diff --git a/extensions/azure/processors/FetchAzureDataLakeStorage.cpp b/extensions/azure/processors/FetchAzureDataLakeStorage.cpp index d5cd64edf..fa51c21f4 100644 --- a/extensions/azure/processors/FetchAzureDataLakeStorage.cpp +++ b/extensions/azure/processors/FetchAzureDataLakeStorage.cpp @@ -40,17 +40,17 @@ std::optional<storage::FetchAzureDataLakeStorageParameters> FetchAzureDataLakeSt } if (auto range_start = utils::parseOptionalU64Property(context, RangeStart, &flow_file)) { - params.range_start = *range_start; + params.range_start = range_start; logger_->log_debug("Range Start property set to {}", *params.range_start); } if (auto range_length = utils::parseOptionalU64Property(context, RangeLength, &flow_file)) { - params.range_length = *range_length; + params.range_length = range_length; logger_->log_debug("Range Length property set to {}", *params.range_length); } if (auto number_of_retries = utils::parseOptionalU64Property(context, NumberOfRetries, &flow_file)) { - params.number_of_retries = *number_of_retries; + params.number_of_retries = number_of_retries; logger_->log_debug("Number Of Retries property set to {}", *params.number_of_retries); } diff --git a/extensions/azure/processors/PutAzureDataLakeStorage.cpp b/extensions/azure/processors/PutAzureDataLakeStorage.cpp index 192e5d731..8e96b98a1 100644 --- a/extensions/azure/processors/PutAzureDataLakeStorage.cpp +++ b/extensions/azure/processors/PutAzureDataLakeStorage.cpp @@ -123,7 +123,7 @@ int64_t PutAzureDataLakeStorage::ReadCallback::operator()(const std::shared_ptr< } result_ = azure_data_lake_storage_.uploadFile(params_, buffer); - return read_ret; + return gsl::narrow<int64_t>(read_ret); } REGISTER_RESOURCE(PutAzureDataLakeStorage, Processor); diff --git a/extensions/civetweb/processors/ListenHTTP.cpp b/extensions/civetweb/processors/ListenHTTP.cpp index 9bccbcb73..982c30b79 100644 --- a/extensions/civetweb/processors/ListenHTTP.cpp +++ b/extensions/civetweb/processors/ListenHTTP.cpp @@ -486,7 +486,7 @@ void ListenHTTP::Handler::writeBody(core::ProcessSession* payload_reader, mg_con } bool ListenHTTP::isSecure() const { - return (listeningPort.length() > 0) && *listeningPort.rbegin() == 's'; + return !listeningPort.empty() && *listeningPort.rbegin() == 's'; } std::string ListenHTTP::getPort() const { diff --git a/extensions/execute-process/ExecuteProcess.cpp b/extensions/execute-process/ExecuteProcess.cpp index 276663dcd..03e696a26 100644 --- a/extensions/execute-process/ExecuteProcess.cpp +++ b/extensions/execute-process/ExecuteProcess.cpp @@ -158,7 +158,7 @@ void ExecuteProcess::readOutput(core::ProcessSession& session) const { std::shared_ptr<core::FlowFile> flow_file; auto num_read = read(pipefd_[0], buf_ptr, buffer.size()); while (num_read > 0) { - if (num_read == static_cast<ssize_t>(buffer.size() - read_to_buffer)) { + if (num_read == static_cast<ssize_t>(buffer.size() - read_to_buffer)) { // NOLINT(modernize-use-integer-sign-comparison) // we reach the max buffer size logger_->log_debug("Execute Command Max Respond {}", buffer.size()); if (!writeToFlowFile(session, flow_file, buffer)) { diff --git a/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp b/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp index 549fa681e..969865a74 100644 --- a/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp +++ b/extensions/gcp/tests/GCPCredentialsControllerServiceTests.cpp @@ -74,7 +74,7 @@ class GCPCredentialsTests : public ::testing::Test { ASSERT_TRUE(gcp_credentials_); plan_->addProcessor("DummyProcessor", "dummy_processor"); } - TestController test_controller_{}; + TestController test_controller_; std::shared_ptr<TestPlan> plan_ = test_controller_.createPlan(); std::shared_ptr<minifi::core::controller::ControllerServiceNode> gcp_credentials_node_ = plan_->addController("GCPCredentialsControllerService", "gcp_credentials_controller_service"); std::shared_ptr<GCPCredentialsControllerService> gcp_credentials_ = std::dynamic_pointer_cast<GCPCredentialsControllerService>(gcp_credentials_node_->getControllerServiceImplementation()); diff --git a/extensions/kafka/PublishKafka.cpp b/extensions/kafka/PublishKafka.cpp index 9fd2a0f77..7c6c0912c 100644 --- a/extensions/kafka/PublishKafka.cpp +++ b/extensions/kafka/PublishKafka.cpp @@ -112,7 +112,7 @@ class PublishKafka::Messages { } template<typename Func> - auto modifyResult(size_t index, Func fun) -> decltype(fun(flow_files_.at(index))) { + auto modifyResult(size_t index, const Func& fun) -> decltype(fun(flow_files_.at(index))) { std::unique_lock<std::mutex> lock(mutex_); const auto notifier = gsl::finally([this] { cv_.notify_all(); }); try { @@ -219,7 +219,7 @@ class ReadCallback { // in case of success, rd_kafka_producev takes ownership of the headers, so we no longer need to delete it std::ignore = callback_ptr.release(); } - logger_->log_trace("produce enqueued flow file #{}/segment #{}: {}", + logger_->log_trace("produce enqueued flow file #{}/segment #{}: {}", // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks) flow_file_index_, segment_num, rd_kafka_err2str(err)); @@ -353,7 +353,7 @@ void PublishKafka::onSchedule(core::ProcessContext& context, core::ProcessSessio // Attributes to Send as Headers attributeNameRegex_ = context.getProperty(AttributeNameRegex) - | utils::transform([](const auto pattern_str) { return utils::Regex{std::move(pattern_str)}; }) + | utils::transform([](auto pattern_str) { return utils::Regex{std::move(pattern_str)}; }) | utils::toOptional(); key_.brokers_ = brokers; diff --git a/extensions/libarchive/FocusArchiveEntry.cpp b/extensions/libarchive/FocusArchiveEntry.cpp index 50a1dda8c..acc301194 100644 --- a/extensions/libarchive/FocusArchiveEntry.cpp +++ b/extensions/libarchive/FocusArchiveEntry.cpp @@ -68,7 +68,6 @@ void FocusArchiveEntry::onTrigger(core::ProcessContext& context, core::ProcessSe // For each extracted entry, import & stash to key std::string targetEntryStashKey; - std::string targetEntry; for (auto &entryMetadata : archiveMetadata.entryMetadata) { if (entryMetadata.entryType == AE_IFREG) { diff --git a/extensions/libarchive/tests/MergeFileTests.cpp b/extensions/libarchive/tests/MergeFileTests.cpp index e5a3adcfc..3da5b84df 100644 --- a/extensions/libarchive/tests/MergeFileTests.cpp +++ b/extensions/libarchive/tests/MergeFileTests.cpp @@ -639,9 +639,9 @@ TEST_CASE_METHOD(MergeTestController, "Test Merge File Attributes Keeping Only C std::shared_ptr<core::FlowFile> flow = output_->poll(expiredFlowRecords); auto attributes = flow->getAttributes(); - REQUIRE(attributes.find("tagUncommon") == attributes.end()); - REQUIRE(attributes.find("tagUnique1") == attributes.end()); - REQUIRE(attributes.find("tagUnique2") == attributes.end()); + CHECK_FALSE(attributes.contains("tagUncommon")); + CHECK_FALSE(attributes.contains("tagUnique1")); + CHECK_FALSE(attributes.contains("tagUnique2")); REQUIRE(attributes["tagCommon"] == "common"); REQUIRE(attributes["mime.type"] == "application/tar"); } @@ -688,7 +688,7 @@ TEST_CASE_METHOD(MergeTestController, "Test Merge File Attributes Keeping All Un std::shared_ptr<core::FlowFile> flow = output_->poll(expiredFlowRecords); auto attributes = flow->getAttributes(); - REQUIRE(attributes.find("tagUncommon") == attributes.end()); + CHECK_FALSE(attributes.contains("tagUncommon")); REQUIRE(attributes["tagUnique1"] == "unique1"); REQUIRE(attributes["tagUnique2"] == "unique2"); REQUIRE(attributes["tagCommon"] == "common"); diff --git a/extensions/libarchive/tests/util/ArchiveTests.cpp b/extensions/libarchive/tests/util/ArchiveTests.cpp index 03b0b9e3e..93cc99e6a 100644 --- a/extensions/libarchive/tests/util/ArchiveTests.cpp +++ b/extensions/libarchive/tests/util/ArchiveTests.cpp @@ -83,7 +83,7 @@ void build_test_archive(const std::filesystem::path& path, const TAE_MAP_T& entr } for (const std::string& name : order) { - TestArchiveEntry test_entry = entries.at(name); + const TestArchiveEntry& test_entry = entries.at(name); std::cout << "Adding entry: " << name << std::endl; diff --git a/extensions/lua/LuaScriptFlowFile.cpp b/extensions/lua/LuaScriptFlowFile.cpp index 38f23ba2f..6476adde3 100644 --- a/extensions/lua/LuaScriptFlowFile.cpp +++ b/extensions/lua/LuaScriptFlowFile.cpp @@ -56,20 +56,20 @@ bool LuaScriptFlowFile::setAttribute(const std::string& key, const std::string& return flow_file_->setAttribute(key, value); } -bool LuaScriptFlowFile::updateAttribute(std::string key, std::string value) { +bool LuaScriptFlowFile::updateAttribute(std::string_view key, const std::string& value) { if (!flow_file_) { throw std::runtime_error("Access of FlowFile after it has been released"); } - return flow_file_->updateAttribute(std::move(key), std::move(value)); + return flow_file_->updateAttribute(key, value); } -bool LuaScriptFlowFile::removeAttribute(std::string key) { +bool LuaScriptFlowFile::removeAttribute(std::string_view key) { if (!flow_file_) { throw std::runtime_error("Access of FlowFile after it has been released"); } - return flow_file_->removeAttribute(std::move(key)); + return flow_file_->removeAttribute(key); } std::shared_ptr<core::FlowFile> LuaScriptFlowFile::getFlowFile() { diff --git a/extensions/lua/LuaScriptFlowFile.h b/extensions/lua/LuaScriptFlowFile.h index 36c3ae50a..477f23a0f 100644 --- a/extensions/lua/LuaScriptFlowFile.h +++ b/extensions/lua/LuaScriptFlowFile.h @@ -32,8 +32,8 @@ class LuaScriptFlowFile { std::string getAttribute(const std::string &key); bool setAttribute(const std::string &key, const std::string &value); bool addAttribute(const std::string &key, const std::string &value); - bool updateAttribute(std::string key, std::string value); - bool removeAttribute(std::string key); + bool updateAttribute(std::string_view key, const std::string& value); + bool removeAttribute(std::string_view key); std::shared_ptr<core::FlowFile> getFlowFile(); void releaseFlowFile(); diff --git a/extensions/opc/include/opc.h b/extensions/opc/include/opc.h index 7be3d39a1..dee0c3347 100644 --- a/extensions/opc/include/opc.h +++ b/extensions/opc/include/opc.h @@ -123,7 +123,7 @@ struct NodeData { UA_Variant* var_; explicit NodeData(UA_Variant * var = nullptr) { - var_ = var; + var_ = var; // NOLINT(clang-analyzer-optin.cplusplus.UninitializedObject) } void addVariant(UA_Variant * var) { if (var_) { diff --git a/extensions/opc/src/opc.cpp b/extensions/opc/src/opc.cpp index fccf992c3..f8e44f6d2 100644 --- a/extensions/opc/src/opc.cpp +++ b/extensions/opc/src/opc.cpp @@ -160,7 +160,7 @@ Client::Client(const std::shared_ptr<core::logging::Logger>& logger, const std:: UA_ClientConfig *config_ptr = UA_Client_getConfig(client_); config_ptr->logging = &minifi_ua_logger_; - if (application_uri.length() > 0) { + if (!application_uri.empty()) { UA_String_clear(&config_ptr->clientDescription.applicationUri); config_ptr->clientDescription.applicationUri = UA_STRING_ALLOC(application_uri.c_str()); } @@ -246,7 +246,6 @@ NodeData Client::getNodeData(const UA_ReferenceDescription *ref, const std::stri request.timestampsToReturn = UA_TIMESTAMPSTORETURN_BOTH; UA_ReadResponse response = UA_Client_Service_read(client_, request); UA_DataValue *dv = response.results; - auto server_timestamp = OPCDateTime2String(dv->serverTimestamp); auto source_timestamp = OPCDateTime2String(dv->sourceTimestamp); nodedata.attributes["Sourcetimestamp"] = source_timestamp; UA_ReadResponse_clear(&response); diff --git a/extensions/rocksdb-repos/tests/ProvenanceTests.cpp b/extensions/rocksdb-repos/tests/ProvenanceTests.cpp index e63930ded..ab70db15e 100644 --- a/extensions/rocksdb-repos/tests/ProvenanceTests.cpp +++ b/extensions/rocksdb-repos/tests/ProvenanceTests.cpp @@ -36,7 +36,7 @@ using namespace std::literals::chrono_literals; TEST_CASE("Test Provenance record create", "[Testprovenance::ProvenanceEventRecord]") { auto record1 = std::make_shared<provenance::ProvenanceEventRecordImpl>(provenance::ProvenanceEventRecord::ProvenanceEventType::CREATE, "blah", "blahblah"); REQUIRE(record1->getAttributes().empty()); - REQUIRE(record1->getAlternateIdentifierUri().length() == 0); + REQUIRE(record1->getAlternateIdentifierUri().empty()); } TEST_CASE("Test Provenance record serialization", "[Testprovenance::ProvenanceEventRecordSerializeDeser]") { diff --git a/extensions/sftp/processors/ListSFTP.cpp b/extensions/sftp/processors/ListSFTP.cpp index 3b6ce984e..0bd2975e6 100644 --- a/extensions/sftp/processors/ListSFTP.cpp +++ b/extensions/sftp/processors/ListSFTP.cpp @@ -384,7 +384,7 @@ bool ListSFTP::updateFromTrackingTimestampsCache(core::ProcessContext& /*context return false; } for (const auto &kv : state_map) { - if (kv.first.compare(0, strlen("id."), "id.") == 0) { + if (kv.first.starts_with("id.")) { state_ids.emplace(kv.second); } } @@ -420,7 +420,7 @@ void ListSFTP::listByTrackingTimestamps( uint16_t port, const std::string& username, const std::string& remote_path, - std::vector<Child>&& files) { + std::vector<Child> files) { auto min_timestamp_to_list = last_listed_latest_entry_timestamp_; /* Load state from cache file if needed */ @@ -676,7 +676,7 @@ void ListSFTP::listByTrackingEntities( const std::string& username, const std::string& remote_path, std::chrono::milliseconds entity_tracking_time_window, - std::vector<Child>&& files) { + std::vector<Child> files) { /* Load state from cache file if needed */ if (!already_loaded_from_cache_) { if (updateFromTrackingEntitiesCache(context, hostname, username, remote_path)) { @@ -690,7 +690,7 @@ void ListSFTP::listByTrackingEntities( time_t now = time(nullptr); uint64_t min_timestamp_to_list = (!initial_listing_complete_ && entity_tracking_initial_listing_target_ == ENTITY_TRACKING_INITIAL_LISTING_TARGET_ALL_AVAILABLE) - ? 0U : (now * 1000 - entity_tracking_time_window.count()); + ? 0U : ((now * 1000) - entity_tracking_time_window.count()); /* Skip files not in the tracking window */ for (auto it = files.begin(); it != files.end(); ) { diff --git a/extensions/sftp/processors/ListSFTP.h b/extensions/sftp/processors/ListSFTP.h index 4ed764923..7466f879b 100644 --- a/extensions/sftp/processors/ListSFTP.h +++ b/extensions/sftp/processors/ListSFTP.h @@ -279,7 +279,7 @@ class ListSFTP : public SFTPProcessorBase { uint16_t port, const std::string& username, const std::string& remote_path, - std::vector<Child>&& files); + std::vector<Child> files); void listByTrackingEntities( core::ProcessContext& context, @@ -289,7 +289,7 @@ class ListSFTP : public SFTPProcessorBase { const std::string& username, const std::string& remote_path, std::chrono::milliseconds entity_tracking_time_window, - std::vector<Child>&& files); + std::vector<Child> files); }; } // namespace org::apache::nifi::minifi::processors diff --git a/extensions/sftp/processors/SFTPProcessorBase.cpp b/extensions/sftp/processors/SFTPProcessorBase.cpp index d6d0923c4..c06cf285d 100644 --- a/extensions/sftp/processors/SFTPProcessorBase.cpp +++ b/extensions/sftp/processors/SFTPProcessorBase.cpp @@ -185,9 +185,7 @@ void SFTPProcessorBase::keepaliveThreadFunc() { connection.first.hostname, connection.first.port, seconds_to_next); - if (seconds_to_next < min_wait) { - min_wait = seconds_to_next; - } + min_wait = std::min(min_wait, seconds_to_next); } else { logger_->log_debug("Failed to send keepalive to {}@{}:{}", connection.first.username, @@ -197,9 +195,7 @@ void SFTPProcessorBase::keepaliveThreadFunc() { } /* Avoid busy loops */ - if (min_wait < 1) { - min_wait = 1; - } + min_wait = std::max(min_wait, 1); logger_->log_trace("Keepalive thread is going to sleep for {} s", min_wait); keepalive_cv_.wait_for(lock, std::chrono::seconds(min_wait), [this] { diff --git a/extensions/sftp/tests/ListThenFetchSFTPTests.cpp b/extensions/sftp/tests/ListThenFetchSFTPTests.cpp index 60a4df000..cd821bdd3 100644 --- a/extensions/sftp/tests/ListThenFetchSFTPTests.cpp +++ b/extensions/sftp/tests/ListThenFetchSFTPTests.cpp @@ -158,7 +158,7 @@ class ListThenFetchSFTPTestsFixture { } void createFileWithModificationTimeDiff(const std::string& relative_path, const std::string& content, std::chrono::seconds modification_timediff = -5min) const { - return createFile(relative_path, content, std::chrono::file_clock::now() + modification_timediff); + createFile(relative_path, content, std::chrono::file_clock::now() + modification_timediff); } enum TestWhere { diff --git a/extensions/sql/data/SQLRowsetProcessor.cpp b/extensions/sql/data/SQLRowsetProcessor.cpp index 8d7403755..01c997487 100644 --- a/extensions/sql/data/SQLRowsetProcessor.cpp +++ b/extensions/sql/data/SQLRowsetProcessor.cpp @@ -21,11 +21,7 @@ #include "minifi-cpp/Exception.h" #include "utils/StringUtils.h" -namespace org { -namespace apache { -namespace nifi { -namespace minifi { -namespace sql { +namespace org::apache::nifi::minifi::sql { SQLRowsetProcessor::SQLRowsetProcessor(std::unique_ptr<Rowset> rowset, std::vector<std::reference_wrapper<SQLRowSubscriber>> row_subscribers) : rowset_(std::move(rowset)), row_subscribers_(std::move(row_subscribers)) { @@ -104,11 +100,11 @@ void SQLRowsetProcessor::addRow(const Row& row, size_t rowCount) { case DataType::DATE: { const std::tm when = row.getDate(i); - char value[128]; - if (!std::strftime(value, sizeof(value), "%Y-%m-%d %H:%M:%S", &when)) + std::array<char, 128> value{}; + if (!std::strftime(value.data(), value.size(), "%Y-%m-%d %H:%M:%S", &when)) throw minifi::Exception(PROCESSOR_EXCEPTION, "SQLRowsetProcessor: !strftime."); - processColumn(name, std::string(value)); + processColumn(name, std::string(value.data())); } break; default: { @@ -123,9 +119,4 @@ void SQLRowsetProcessor::addRow(const Row& row, size_t rowCount) { } } -} /* namespace sql */ -} /* namespace minifi */ -} /* namespace nifi */ -} /* namespace apache */ -} /* namespace org */ - +} // namespace org::apache::nifi::minifi::sql diff --git a/extensions/sql/processors/QueryDatabaseTable.cpp b/extensions/sql/processors/QueryDatabaseTable.cpp index d68c41d5a..3f63d7f6f 100644 --- a/extensions/sql/processors/QueryDatabaseTable.cpp +++ b/extensions/sql/processors/QueryDatabaseTable.cpp @@ -143,7 +143,7 @@ bool QueryDatabaseTable::loadMaxValuesFromStoredState(const std::unordered_map<s } } for (auto& column : max_value_columns_) { - if (new_max_values.find(column) == new_max_values.end()) { + if (!new_max_values.contains(column)) { logger_->log_info("New maximum-value column \"{}\" specified, resetting state.", column.str()); return false; } diff --git a/extensions/standard-processors/processors/AttributeRollingWindow.cpp b/extensions/standard-processors/processors/AttributeRollingWindow.cpp index 1eecb36c2..c46631b47 100644 --- a/extensions/standard-processors/processors/AttributeRollingWindow.cpp +++ b/extensions/standard-processors/processors/AttributeRollingWindow.cpp @@ -113,7 +113,7 @@ void AttributeRollingWindow::calculateAndSetAttributes(core::FlowFile &flow_file }()); // https://math.stackexchange.com/questions/1720876/sums-of-squares-minus-square-of-sums const auto avg_of_squares = std::accumulate(std::begin(sorted_values), std::end(sorted_values), 0.0, [&](double acc, double value) { - return acc + std::pow(value, 2) / gsl::narrow_cast<double>(sorted_values.size()); + return acc + (std::pow(value, 2) / gsl::narrow_cast<double>(sorted_values.size())); }); const auto variance = avg_of_squares - std::pow(mean, 2); set_aggregate("variance", variance); diff --git a/extensions/standard-processors/processors/AttributesToJSON.cpp b/extensions/standard-processors/processors/AttributesToJSON.cpp index 357bd9e50..866c3b1df 100644 --- a/extensions/standard-processors/processors/AttributesToJSON.cpp +++ b/extensions/standard-processors/processors/AttributesToJSON.cpp @@ -38,11 +38,11 @@ void AttributesToJSON::initialize() { void AttributesToJSON::onSchedule(core::ProcessContext& context, core::ProcessSessionFactory&) { attribute_list_ = context.getProperty(AttributesList) - | utils::transform([](const auto attributes_list_str) { return utils::string::splitAndTrimRemovingEmpty(attributes_list_str, ","); }) + | utils::transform([](const auto& attributes_list_str) { return utils::string::splitAndTrimRemovingEmpty(attributes_list_str, ","); }) | utils::valueOrElse([] { return std::vector<std::string>{}; }); attributes_regular_expression_ = context.getProperty(AttributesRegularExpression) - | utils::transform([](const auto s) { return utils::Regex{s}; }) + | utils::transform([](auto s) { return utils::Regex{std::move(s)}; }) | utils::toOptional(); write_destination_ = utils::parseEnumProperty<attributes_to_json::WriteDestination>(context, Destination); diff --git a/extensions/standard-processors/processors/DefragmentText.cpp b/extensions/standard-processors/processors/DefragmentText.cpp index 70d09c021..6b051682b 100644 --- a/extensions/standard-processors/processors/DefragmentText.cpp +++ b/extensions/standard-processors/processors/DefragmentText.cpp @@ -52,7 +52,7 @@ void DefragmentText::onSchedule(core::ProcessContext& context, core::ProcessSess pattern_location_ = utils::parseEnumProperty<defragment_text::PatternLocation>(context, PatternLoc); pattern_ = context.getProperty(Pattern) - | utils::transform([](const auto pattern_str) { return utils::Regex{pattern_str}; }) + | utils::transform([](auto pattern_str) { return utils::Regex{std::move(pattern_str)}; }) | utils::orThrow("Pattern property missing or invalid"); } diff --git a/extensions/standard-processors/processors/PutFile.cpp b/extensions/standard-processors/processors/PutFile.cpp index adcbda6c0..2bd822399 100644 --- a/extensions/standard-processors/processors/PutFile.cpp +++ b/extensions/standard-processors/processors/PutFile.cpp @@ -82,7 +82,8 @@ void PutFile::onTrigger(core::ProcessContext& context, core::ProcessSession& ses auto dest_path = getDestinationPath(context, flow_file); if (!dest_path) { - return session.transfer(flow_file, Failure); + session.transfer(flow_file, Failure); + return; } logger_->log_trace("PutFile writing file {} into directory {}", dest_path->filename(), dest_path->parent_path()); @@ -90,15 +91,18 @@ void PutFile::onTrigger(core::ProcessContext& context, core::ProcessSession& ses if (directoryIsFull(dest_path->parent_path())) { logger_->log_warn("Routing to failure because the output directory {} has at least {} files, which exceeds the " "configured max number of files", dest_path->parent_path(), *max_dest_files_); - return session.transfer(flow_file, Failure); + session.transfer(flow_file, Failure); + return; } if (utils::file::exists(*dest_path)) { logger_->log_info("Destination file {} exists; applying Conflict Resolution Strategy: {}", dest_path->string(), magic_enum::enum_name(conflict_resolution_strategy_)); if (conflict_resolution_strategy_ == FileExistsResolutionStrategy::fail) { - return session.transfer(flow_file, Failure); + session.transfer(flow_file, Failure); + return; } else if (conflict_resolution_strategy_ == FileExistsResolutionStrategy::ignore) { - return session.transfer(flow_file, Success); + session.transfer(flow_file, Success); + return; } } diff --git a/extensions/standard-processors/processors/PutUDP.cpp b/extensions/standard-processors/processors/PutUDP.cpp index a20d0caeb..aa4b1eb63 100644 --- a/extensions/standard-processors/processors/PutUDP.cpp +++ b/extensions/standard-processors/processors/PutUDP.cpp @@ -90,7 +90,7 @@ void PutUDP::onTrigger(core::ProcessContext& context, core::ProcessSession& sess for (const auto& resolver_entry : resolved_query) { error.clear(); udp::socket socket(io_context); - socket.open(resolver_entry.endpoint().protocol(), error); + std::ignore = socket.open(resolver_entry.endpoint().protocol(), error); if (error) { logger->log_debug("opening {} socket failed due to {} ", resolver_entry.endpoint().protocol() == udp::v4() ? "IPv4" : "IPv6", error.message()); continue; diff --git a/extensions/standard-processors/processors/SplitText.cpp b/extensions/standard-processors/processors/SplitText.cpp index 68797e26d..0e43494c5 100644 --- a/extensions/standard-processors/processors/SplitText.cpp +++ b/extensions/standard-processors/processors/SplitText.cpp @@ -53,7 +53,7 @@ uint8_t LineReader::getEndLineSize(size_t newline_position) { } void LineReader::setLastLineInfoAttributes(uint8_t endline_size, const std::optional<std::string>& starts_with) { - const uint64_t size_from_beginning_of_stream = (current_buffer_count_ - 1) * buffer_size_ + buffer_offset_; + const uint64_t size_from_beginning_of_stream = ((current_buffer_count_ - 1) * buffer_size_) + buffer_offset_; if (last_line_info_) { LineInfo previous_line_info = *last_line_info_; last_line_info_->offset = previous_line_info.offset + previous_line_info.size; @@ -401,7 +401,7 @@ void SplitText::onSchedule(core::ProcessContext& context, core::ProcessSessionFa split_text_config_.line_split_count = utils::parseU64Property(context, LineSplitCount); logger_->log_debug("SplitText line split count: {}", split_text_config_.line_split_count); if (const auto max_fragment_data_size_value = utils::parseOptionalDataSizeProperty(context, MaximumFragmentSize)) { - split_text_config_.maximum_fragment_size = *max_fragment_data_size_value; + split_text_config_.maximum_fragment_size = max_fragment_data_size_value; logger_->log_debug("SplitText maximum fragment size: {}", split_text_config_.maximum_fragment_size.value()); } if (split_text_config_.maximum_fragment_size && split_text_config_.maximum_fragment_size.value() == 0) { diff --git a/extensions/standard-processors/tests/unit/RouteTextTests.cpp b/extensions/standard-processors/tests/unit/RouteTextTests.cpp index 75521c3cb..9b503fd30 100644 --- a/extensions/standard-processors/tests/unit/RouteTextTests.cpp +++ b/extensions/standard-processors/tests/unit/RouteTextTests.cpp @@ -95,7 +95,7 @@ struct RouteTextController : public TestController { } verifyOutputRelationship(rel, files); } - if (patterns.find("original") == patterns.end()) { + if (!patterns.contains("original")) { // expectations on "original" were implicit verifyOutputRelationship("original", all); } diff --git a/extensions/standard-processors/tests/unit/SplitTextTests.cpp b/extensions/standard-processors/tests/unit/SplitTextTests.cpp index 53c437627..4e8297a93 100644 --- a/extensions/standard-processors/tests/unit/SplitTextTests.cpp +++ b/extensions/standard-processors/tests/unit/SplitTextTests.cpp @@ -81,7 +81,7 @@ TEST_CASE("Test LineReader with input larger than buffer length") { TEST_CASE("Test LineReader with input of same size as buffer length") { auto stream = std::make_shared<io::BufferStream>(); - std::string input = std::string(BUFFER_SIZE - 1, 'a') + "\n" + std::string(BUFFER_SIZE * 2 - 1, 'b') + "\n"; + std::string input = std::string(BUFFER_SIZE - 1, 'a') + "\n" + std::string((BUFFER_SIZE * 2) - 1, 'b') + "\n"; stream->write(reinterpret_cast<const uint8_t*>(input.data()), input.size()); processors::detail::LineReader reader{stream, BUFFER_SIZE}; CHECK(reader.readNextLine() == processors::detail::LineReader::LineInfo{.offset = 0, .size = BUFFER_SIZE, .endline_size = 1}); diff --git a/extensions/standard-processors/tests/unit/YamlConnectionParserTest.cpp b/extensions/standard-processors/tests/unit/YamlConnectionParserTest.cpp index 5798f5f31..3884d8cc5 100644 --- a/extensions/standard-processors/tests/unit/YamlConnectionParserTest.cpp +++ b/extensions/standard-processors/tests/unit/YamlConnectionParserTest.cpp @@ -147,7 +147,6 @@ TEST_CASE("Connections components are parsed from yaml", "[YamlConfiguration]") CHECK_THROWS(StructuredConnectionParser(connection_node, "test_node", parent_ptr, logger)); } SECTION("With a configuration that lists keys but has no assigned values") { - std::string serialized_yaml; SECTION("Single relationship name left empty") { YAML::Node yaml_node = YAML::Load(std::string { "source name: \n" diff --git a/extensions/standard-processors/utils/JoltUtils.cpp b/extensions/standard-processors/utils/JoltUtils.cpp index 6b533f617..bf9392527 100644 --- a/extensions/standard-processors/utils/JoltUtils.cpp +++ b/extensions/standard-processors/utils/JoltUtils.cpp @@ -284,7 +284,7 @@ std::optional<std::vector<std::string_view>> Spec::Regex::match(std::string_view } // first fragment is at the beginning of the string - if (str.substr(0, fragments.front().size()) != fragments.front()) { + if (!str.starts_with(fragments.front())) { return std::nullopt; } auto it = str.begin() + fragments.front().size(); @@ -833,9 +833,9 @@ void putValue(const Spec::Context& ctx, const Spec::Destination& dest, const rap member_value = inner_member_value.value(); } else { auto sub_path = toString(ctx, val_ref->second); - ctx.log([&] (auto logger) { + ctx.log([&] (const auto& logger) { logger->log_trace("Could not find member at @({},{} as {}) from {}", val_ref->first, sub_path.first, sub_path.second, ctx.path()); - }, [] (auto) {}); + }, [] (const auto&) {}); // do not write anything and do not throw return; } @@ -1009,9 +1009,9 @@ void Spec::Pattern::process(const Value& val, const Context& ctx, const rapidjso } bool Spec::Pattern::processMember(const Context& ctx, std::string_view name, const rapidjson::Value& member, rapidjson::Document& output) const { - auto on_exit = ctx.log([&] (auto logger) { + auto on_exit = ctx.log([&] (const auto& logger) { logger->log_trace("Processing member '{}' of {}", name, ctx.path()); - }, [&] (auto logger) { + }, [&] (const auto& logger) { logger->log_trace("Finished processing member '{}' of {}", name, ctx.path()); }); if (auto it = literal_indices.find(std::string{name}); it != literal_indices.end()) { @@ -1078,9 +1078,9 @@ void Spec::Pattern::processObject(const Context& ctx, const rapidjson::Value &in } void Spec::Pattern::process(const Context& ctx, const rapidjson::Value &input, rapidjson::Document &output) const { - auto on_exit = ctx.log([&] (auto logger) { + auto on_exit = ctx.log([&] (const auto& logger) { logger->log_trace("Processing node at {}", ctx.path()); - }, [&] (auto logger) { + }, [&] (const auto& logger) { logger->log_trace("Finished processing node at {}", ctx.path()); }); for (auto& [val_ref, dest] : values) { @@ -1096,16 +1096,17 @@ void Spec::Pattern::process(const Context& ctx, const rapidjson::Value &input, r Context sub_ctx = ctx.extend(ctx.matches, ctx.node); process(dest, sub_ctx, value.value(), output); } else { - ctx.log([&, path_ptr = &path] (auto logger) { + ctx.log([&, path_ptr = &path] (const auto& logger) { auto path_str = toString(ctx, *path_ptr); logger->log_trace("Failed to resolve value path {} (evaled as {}) at {} (triggered from {}): {}", path_str.first, path_str.second, target->path(), ctx.path(), value.error()); - }, [&] (auto) {}); + }, [] (const auto&) {}); // pass, non-existent member is not an error } } for (auto& [key, dest] : keys) { auto key_str = ctx.find(key.first)->matches.at(key.second); - putValue(ctx.extend({key_str}, nullptr), dest, rapidjson::Value{key_str.data(), gsl::narrow<rapidjson::SizeType>(key_str.size()), output.GetAllocator()}, output); + putValue(ctx.extend({key_str}, nullptr), dest, + rapidjson::Value{key_str.data(), gsl::narrow<rapidjson::SizeType>(key_str.size()), output.GetAllocator()}, output); // NOLINT(bugprone-suspicious-stringview-data-usage) } for (auto& [value, dest] : defaults) { Context sub_ctx = ctx.extend({value}, nullptr); diff --git a/extensions/standard-processors/utils/JoltUtils.h b/extensions/standard-processors/utils/JoltUtils.h index a6b0a0947..c9b208233 100644 --- a/extensions/standard-processors/utils/JoltUtils.h +++ b/extensions/standard-processors/utils/JoltUtils.h @@ -58,7 +58,7 @@ class Spec { return nullptr; } - template<std::invocable<std::shared_ptr<core::logging::Logger>> OnEnterFn, std::invocable<std::shared_ptr<core::logging::Logger>> OnExitFn> + template<std::invocable<const std::shared_ptr<core::logging::Logger>&> OnEnterFn, std::invocable<const std::shared_ptr<core::logging::Logger>&> OnExitFn> ::gsl::final_action<std::function<void()>> log(OnEnterFn on_enter, OnExitFn on_exit) const { if (logger) { on_enter(logger); diff --git a/extensions/systemd/ConsumeJournald.cpp b/extensions/systemd/ConsumeJournald.cpp index cb8dfcb47..8fbe4356a 100644 --- a/extensions/systemd/ConsumeJournald.cpp +++ b/extensions/systemd/ConsumeJournald.cpp @@ -78,7 +78,7 @@ void ConsumeJournald::onSchedule(core::ProcessContext& context, core::ProcessSes return process_old_messages ? journal.seekHead() : journal.seekTail(); }; worker_->enqueue([this, &seek_default] { - const auto cursor = state_manager_->get() | utils::transform([](std::unordered_map<std::string, std::string>&& m) { return m.at(CURSOR_KEY); }); + const auto cursor = state_manager_->get() | utils::transform([](const std::unordered_map<std::string, std::string>& m) { return m.at(CURSOR_KEY); }); if (!cursor) { seek_default(*journal_); } else { diff --git a/extensions/systemd/libwrapper/LibWrapper.cpp b/extensions/systemd/libwrapper/LibWrapper.cpp index c405b5ede..47b3e040a 100644 --- a/extensions/systemd/libwrapper/LibWrapper.cpp +++ b/extensions/systemd/libwrapper/LibWrapper.cpp @@ -18,16 +18,10 @@ #include "LibWrapper.h" #include "DlopenWrapper.h" -namespace org { namespace apache { namespace nifi { namespace minifi { namespace extensions { namespace systemd { namespace libwrapper { +namespace org::apache::nifi::minifi::extensions::systemd::libwrapper { std::unique_ptr<LibWrapper> createLibWrapper() { return std::make_unique<DlopenWrapper>(); } -} // namespace libwrapper -} // namespace systemd -} // namespace extensions -} // namespace minifi -} // namespace nifi -} // namespace apache -} // namespace org +} // namespace org::apache::nifi::minifi::extensions::systemd::libwrapper diff --git a/extensions/systemd/libwrapper/LibWrapper.h b/extensions/systemd/libwrapper/LibWrapper.h index 0785e4eb5..164710c4f 100644 --- a/extensions/systemd/libwrapper/LibWrapper.h +++ b/extensions/systemd/libwrapper/LibWrapper.h @@ -23,7 +23,7 @@ #include "../Common.h" #include "minifi-cpp/utils/gsl.h" -namespace org { namespace apache { namespace nifi { namespace minifi { namespace extensions { namespace systemd { namespace libwrapper { +namespace org::apache::nifi::minifi::extensions::systemd::libwrapper { struct Journal { virtual int seekHead() noexcept = 0; @@ -48,10 +48,4 @@ struct LibWrapper { std::unique_ptr<LibWrapper> createLibWrapper(); -} // namespace libwrapper -} // namespace systemd -} // namespace extensions -} // namespace minifi -} // namespace nifi -} // namespace apache -} // namespace org +} // namespace org::apache::nifi::minifi::extensions::systemd::libwrapper diff --git a/extensions/systemd/tests/ConsumeJournaldTest.cpp b/extensions/systemd/tests/ConsumeJournaldTest.cpp index f793f740f..35d66f536 100644 --- a/extensions/systemd/tests/ConsumeJournaldTest.cpp +++ b/extensions/systemd/tests/ConsumeJournaldTest.cpp @@ -90,7 +90,7 @@ struct TestJournal final : libwrapper::Journal { } int getCursor(gsl::owner<char*>* const cursor_out) noexcept override { - *cursor_out = gsl::owner<char*>(strdup(std::to_string(consumed).c_str())); + *cursor_out = gsl::owner<char*>(strdup(std::to_string(consumed).c_str())); // NOLINT(readability-redundant-casting) return *cursor_out ? 0 : -ENOMEM; } diff --git a/libminifi/include/core/logging/internal/ActiveCompressor.h b/libminifi/include/core/logging/internal/ActiveCompressor.h index 8ffaca8d4..c4de395b5 100644 --- a/libminifi/include/core/logging/internal/ActiveCompressor.h +++ b/libminifi/include/core/logging/internal/ActiveCompressor.h @@ -24,13 +24,7 @@ #include "LogCompressor.h" #include "minifi-cpp/core/logging/Logger.h" -namespace org { -namespace apache { -namespace nifi { -namespace minifi { -namespace core { -namespace logging { -namespace internal { +namespace org::apache::nifi::minifi::core::logging::internal { class ActiveCompressor { public: @@ -63,10 +57,4 @@ class ActiveCompressor { std::unique_ptr<LogCompressor> compressor_; }; -} // namespace internal -} // namespace logging -} // namespace core -} // namespace minifi -} // namespace nifi -} // namespace apache -} // namespace org +} // namespace org::apache::nifi::minifi::core::logging::internal diff --git a/libminifi/include/core/state/UpdateController.h b/libminifi/include/core/state/UpdateController.h index 3203b5ea4..652f43f8d 100644 --- a/libminifi/include/core/state/UpdateController.h +++ b/libminifi/include/core/state/UpdateController.h @@ -15,8 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#ifndef LIBMINIFI_INCLUDE_CORE_STATE_UPDATECONTROLLER_H_ -#define LIBMINIFI_INCLUDE_CORE_STATE_UPDATECONTROLLER_H_ +#pragma once #include <memory> #include <utility> @@ -28,11 +27,7 @@ #include "minifi-cpp/io/InputStream.h" #include "utils/expected.h" -namespace org { -namespace apache { -namespace nifi { -namespace minifi { -namespace state { +namespace org::apache::nifi::minifi::state { enum class UpdateState { INITIATE, @@ -211,10 +206,4 @@ class UpdateController { std::atomic<bool> controller_running_; }; -} // namespace state -} // namespace minifi -} // namespace nifi -} // namespace apache -} // namespace org - -#endif // LIBMINIFI_INCLUDE_CORE_STATE_UPDATECONTROLLER_H_ +} // namespace org::apache::nifi::minifi::state diff --git a/libminifi/src/FlowFileRecord.cpp b/libminifi/src/FlowFileRecord.cpp index 412537f78..46ff8dfd7 100644 --- a/libminifi/src/FlowFileRecord.cpp +++ b/libminifi/src/FlowFileRecord.cpp @@ -178,7 +178,7 @@ std::shared_ptr<FlowFileRecord> FlowFileRecordImpl::DeSerialize(io::InputStream& auto file = std::make_shared<FlowFileRecordImpl>(); { - uint64_t event_time_in_ms; + uint64_t event_time_in_ms = 0; const auto ret = inStream.read(event_time_in_ms); if (ret != 8) { return {}; @@ -187,7 +187,7 @@ std::shared_ptr<FlowFileRecord> FlowFileRecordImpl::DeSerialize(io::InputStream& } { - uint64_t entry_date_in_ms; + uint64_t entry_date_in_ms = 0; const auto ret = inStream.read(entry_date_in_ms); if (ret != 8) { return {}; @@ -196,7 +196,7 @@ std::shared_ptr<FlowFileRecord> FlowFileRecordImpl::DeSerialize(io::InputStream& } { - uint64_t lineage_start_date_in_ms; + uint64_t lineage_start_date_in_ms = 0; const auto ret = inStream.read(lineage_start_date_in_ms); if (ret != 8) { return {}; diff --git a/libminifi/src/RemoteProcessorGroupPort.cpp b/libminifi/src/RemoteProcessorGroupPort.cpp index 890cf5868..1dd4ef74c 100644 --- a/libminifi/src/RemoteProcessorGroupPort.cpp +++ b/libminifi/src/RemoteProcessorGroupPort.cpp @@ -26,6 +26,7 @@ #include <string> #include <utility> #include <vector> +#include <algorithm> #include "minifi-cpp/Exception.h" #include "controllers/SSLContextService.h" @@ -72,7 +73,7 @@ std::unique_ptr<sitetosite::SiteToSiteClient> RemoteProcessorGroupPort::getNextP sitetosite::SiteToSiteClientConfiguration config(peers_[this->peer_index_].getPeer(), local_network_interface_, client_type_); config.setSecurityContext(ssl_service); peer_index_++; - if (peer_index_ >= static_cast<int>(peers_.size())) { + if (peer_index_.load() >= static_cast<int>(peers_.size())) { peer_index_ = 0; } config.setHTTPProxy(this->proxy_); @@ -89,9 +90,7 @@ std::unique_ptr<sitetosite::SiteToSiteClient> RemoteProcessorGroupPort::getNextP } void RemoteProcessorGroupPort::returnProtocol(core::ProcessContext& context, std::unique_ptr<sitetosite::SiteToSiteClient> return_protocol) { - auto count = peers_.size(); - if (context.getProcessor().getMaxConcurrentTasks() > count) - count = context.getProcessor().getMaxConcurrentTasks(); + auto count = std::max(static_cast<size_t>(context.getProcessor().getMaxConcurrentTasks()), peers_.size()); if (available_protocols_.size_approx() >= count) { logger_->log_debug("not enqueueing protocol {}", getUUIDStr()); // let the memory be freed @@ -139,15 +138,13 @@ void RemoteProcessorGroupPort::onSchedule(core::ProcessContext& context, core::P } // populate the site2site protocol for load balancing between them if (!peers_.empty()) { - auto count = peers_.size(); - if (context.getProcessor().getMaxConcurrentTasks() > count) - count = context.getProcessor().getMaxConcurrentTasks(); + auto count = std::max(static_cast<size_t>(context.getProcessor().getMaxConcurrentTasks()), peers_.size()); for (uint32_t i = 0; i < count; i++) { std::unique_ptr<sitetosite::SiteToSiteClient> nextProtocol = nullptr; sitetosite::SiteToSiteClientConfiguration config(peers_[this->peer_index_].getPeer(), this->getInterface(), client_type_); config.setSecurityContext(ssl_service); peer_index_++; - if (peer_index_ >= static_cast<int>(peers_.size())) { + if (peer_index_.load() >= static_cast<int>(peers_.size())) { peer_index_ = 0; } logger_->log_trace("Creating client"); @@ -183,8 +180,6 @@ void RemoteProcessorGroupPort::onTrigger(core::ProcessContext& context, core::Pr RPGLatch count; - std::string value; - logger_->log_trace("On trigger {}", getUUIDStr()); std::unique_ptr<sitetosite::SiteToSiteClient> protocol_ = nullptr; diff --git a/libminifi/src/ResourceClaim.cpp b/libminifi/src/ResourceClaim.cpp index 8f5734c0f..d1aba0825 100644 --- a/libminifi/src/ResourceClaim.cpp +++ b/libminifi/src/ResourceClaim.cpp @@ -64,7 +64,7 @@ ResourceClaimImpl::~ResourceClaimImpl() { } std::shared_ptr<ResourceClaim> ResourceClaim::create(std::shared_ptr<core::ContentRepository> repository) { - return std::make_shared<ResourceClaimImpl>(repository); + return std::make_shared<ResourceClaimImpl>(std::move(repository)); } } // namespace org::apache::nifi::minifi diff --git a/libminifi/src/ThreadedSchedulingAgent.cpp b/libminifi/src/ThreadedSchedulingAgent.cpp index 4befef6d9..c809a3535 100644 --- a/libminifi/src/ThreadedSchedulingAgent.cpp +++ b/libminifi/src/ThreadedSchedulingAgent.cpp @@ -86,7 +86,7 @@ void ThreadedSchedulingAgent::schedule(core::Processor* processor) { std::vector<std::thread *> threads; ThreadedSchedulingAgent *agent = this; - for (int i = 0; i < processor->getMaxConcurrentTasks(); i++) { + for (uint8_t i = 0; i < processor->getMaxConcurrentTasks(); i++) { // reference the disable function from serviceNode processor->incrementActiveTasks(); diff --git a/libminifi/src/c2/C2Agent.cpp b/libminifi/src/c2/C2Agent.cpp index 3519fb49e..363cf9577 100644 --- a/libminifi/src/c2/C2Agent.cpp +++ b/libminifi/src/c2/C2Agent.cpp @@ -357,7 +357,7 @@ void C2Agent::handle_c2_server_response(const C2ContentResponse &resp) { } }); - if (resp.ident.length() > 0) { + if (!resp.ident.empty()) { C2Payload response(Operation::acknowledge, resp.ident, true); enqueue_c2_response(std::move(response)); } @@ -538,7 +538,6 @@ void C2Agent::handle_describe(const C2ContentResponse &resp) { for (const auto &trace : traces) { C2Payload options(Operation::acknowledge, resp.ident, true); options.setLabel(trace.getName()); - std::string value; for (const auto &line : trace.getTraces()) { C2ContentResponse option(Operation::acknowledge); option.name = line; @@ -886,7 +885,7 @@ utils::TaskRescheduleInfo C2Agent::produce() { std::for_each( std::make_move_iterator(payload_batch.begin()), std::make_move_iterator(payload_batch.end()), - [&] (C2Payload&& payload) { + [&] (const C2Payload& payload) { try { C2Payload response = protocol_->consumePayload(payload); enqueue_c2_server_response(std::move(response)); @@ -923,7 +922,7 @@ utils::TaskRescheduleInfo C2Agent::produce() { utils::TaskRescheduleInfo C2Agent::consume() { if (!responses.empty()) { - const auto consume_success = responses.consume([this] (C2Payload&& payload) { + const auto consume_success = responses.consume([this] (const C2Payload& payload) { extractPayload(payload); }); if (!consume_success) { diff --git a/libminifi/src/core/ClassLoader.cpp b/libminifi/src/core/ClassLoader.cpp index b5a523fba..4f3c8d344 100644 --- a/libminifi/src/core/ClassLoader.cpp +++ b/libminifi/src/core/ClassLoader.cpp @@ -93,7 +93,7 @@ ClassLoader& ClassLoaderImpl::getClassLoader(const std::string& child_name) { void ClassLoaderImpl::registerClass(const std::string &clazz, std::unique_ptr<ObjectFactory> factory) { std::lock_guard<std::mutex> lock(internal_mutex_); - if (loaded_factories_.find(clazz) != loaded_factories_.end()) { + if (loaded_factories_.contains(clazz)) { logger_->log_error("Class '{}' is already registered at '{}'", clazz, name_); return; } @@ -122,7 +122,7 @@ class ProcessorFactoryWrapper : public ObjectFactoryImpl { [[nodiscard]] CoreComponent* createRaw(const std::string &name, const utils::Identifier &uuid) override { auto logger = logging::LoggerFactoryBase::getAliasedLogger(getClassName(), uuid); - return new Processor(name, uuid, factory_->create({.uuid = uuid, .name = name, .logger = logger})); + return new Processor(name, uuid, factory_->create({.uuid = uuid, .name = name, .logger = logger})); // NOLINT(cppcoreguidelines-owning-memory) } [[nodiscard]] std::string getGroupName() const override { diff --git a/libminifi/src/core/ProcessSession.cpp b/libminifi/src/core/ProcessSession.cpp index 4f3e289bf..1eeb5a009 100644 --- a/libminifi/src/core/ProcessSession.cpp +++ b/libminifi/src/core/ProcessSession.cpp @@ -86,7 +86,7 @@ ProcessSessionImpl::~ProcessSessionImpl() { void ProcessSessionImpl::add(const std::shared_ptr<core::FlowFile> &record) { utils::Identifier uuid = record->getUUID(); - if (updated_flowfiles_.find(uuid) != updated_flowfiles_.end()) { + if (updated_flowfiles_.contains(uuid)) { throw Exception(ExceptionType::PROCESSOR_EXCEPTION, "Mustn't add file that was provided by this session"); } added_flowfiles_[uuid].flow_file = record; @@ -238,7 +238,7 @@ void ProcessSessionImpl::transferToCustomRelationship(const std::shared_ptr<core } void ProcessSessionImpl::write(const std::shared_ptr<core::FlowFile> &flow, const io::OutputStreamCallback& callback) { - return write(*flow, callback); + write(*flow, callback); } void ProcessSessionImpl::write(core::FlowFile &flow, const io::OutputStreamCallback& callback) { @@ -298,7 +298,8 @@ void ProcessSessionImpl::append(const std::shared_ptr<core::FlowFile> &flow, con std::shared_ptr<ResourceClaim> claim = flow->getResourceClaim(); if (!claim) { // No existed claim for append, we need to create new claim - return write(flow, callback); + write(flow, callback); + return; } try { @@ -457,7 +458,7 @@ detail::ReadBufferResult ProcessSessionImpl::readBuffer(const std::shared_ptr<co return result; } -void ProcessSessionImpl::importFrom(io::InputStream&& stream, const std::shared_ptr<core::FlowFile> &flow) { +void ProcessSessionImpl::importFrom(io::InputStream&& stream, const std::shared_ptr<core::FlowFile> &flow) { // NOLINT(cppcoreguidelines-rvalue-reference-param-not-moved) importFrom(stream, flow); } /** diff --git a/libminifi/src/core/ProcessSessionReadCallback.cpp b/libminifi/src/core/ProcessSessionReadCallback.cpp index 54b531d45..139041fc2 100644 --- a/libminifi/src/core/ProcessSessionReadCallback.cpp +++ b/libminifi/src/core/ProcessSessionReadCallback.cpp @@ -48,7 +48,7 @@ int64_t ProcessSessionReadCallback::operator()(const std::shared_ptr<io::InputSt const auto read = stream->read(buffer); if (io::isError(read)) return -1; if (read == 0) break; - if (!tmp_file_os_.write(reinterpret_cast<char*>(buffer.data()), read)) { + if (!tmp_file_os_.write(reinterpret_cast<char*>(buffer.data()), gsl::narrow<std::streamsize>(read))) { return -1; } size += read; diff --git a/libminifi/src/core/logging/internal/CompressionManager.cpp b/libminifi/src/core/logging/internal/CompressionManager.cpp index 8450c6fb3..145af75fe 100644 --- a/libminifi/src/core/logging/internal/CompressionManager.cpp +++ b/libminifi/src/core/logging/internal/CompressionManager.cpp @@ -34,7 +34,7 @@ std::shared_ptr<LogCompressorSink> CompressionManager::initialize( const auto get_size = [&] (const char* const property_name) -> std::optional<size_t> { auto size_str = properties->getString(property_name); if (!size_str) return {}; - size_t value; + size_t value = 0; if (DataSizeValue::StringToInt(*size_str, value)) { return value; } diff --git a/libminifi/src/core/reporting/SiteToSiteProvenanceReportingTask.cpp b/libminifi/src/core/reporting/SiteToSiteProvenanceReportingTask.cpp index cca76f0ea..1bb7f0239 100644 --- a/libminifi/src/core/reporting/SiteToSiteProvenanceReportingTask.cpp +++ b/libminifi/src/core/reporting/SiteToSiteProvenanceReportingTask.cpp @@ -166,7 +166,7 @@ void SiteToSiteProvenanceReportingTask::onTrigger(core::ProcessContext& context, logger_->log_debug("Captured {} records", deserialized); std::string jsonStr; this->getJsonReport(context, session, records, jsonStr); - if (jsonStr.length() <= 0) { + if (jsonStr.empty()) { return; } diff --git a/libminifi/src/core/state/UpdateController.cpp b/libminifi/src/core/state/UpdateController.cpp index 6978100f9..040cb5cd0 100644 --- a/libminifi/src/core/state/UpdateController.cpp +++ b/libminifi/src/core/state/UpdateController.cpp @@ -20,11 +20,7 @@ #include <utility> #include <string> -namespace org { -namespace apache { -namespace nifi { -namespace minifi { -namespace state { +namespace org::apache::nifi::minifi::state { UpdateStatus::UpdateStatus(UpdateState state, int16_t reason) : state_(state), @@ -43,8 +39,4 @@ int16_t UpdateStatus::getReadonCode() const { return reason_; } -} /* namespace state */ -} /* namespace minifi */ -} /* namespace nifi */ -} /* namespace apache */ -} /* namespace org */ +} // namespace org::apache::nifi::minifi::state diff --git a/libminifi/src/provenance/Provenance.cpp b/libminifi/src/provenance/Provenance.cpp index 40a8ee225..d8ee5e723 100644 --- a/libminifi/src/provenance/Provenance.cpp +++ b/libminifi/src/provenance/Provenance.cpp @@ -457,7 +457,7 @@ void ProvenanceReporterImpl::commit() { std::vector<std::pair<std::string, std::unique_ptr<io::BufferStream>>> flowData; for (auto& event : _events) { - std::unique_ptr<io::BufferStream> stramptr(new io::BufferStream()); + auto stramptr = std::make_unique<io::BufferStream>(); event->serialize(*stramptr); flowData.emplace_back(event->getUUIDStr(), std::move(stramptr)); diff --git a/libminifi/src/sitetosite/RawSocketProtocol.cpp b/libminifi/src/sitetosite/RawSocketProtocol.cpp index 35ba9ac34..dcdd8ec66 100644 --- a/libminifi/src/sitetosite/RawSocketProtocol.cpp +++ b/libminifi/src/sitetosite/RawSocketProtocol.cpp @@ -557,7 +557,7 @@ bool RawSiteToSiteClient::transmitPayload(core::ProcessContext& context, core::P std::map<std::string, std::string> attributes) { std::shared_ptr<Transaction> transaction; - if (payload.length() <= 0) + if (payload.empty()) return false; if (peer_state_ != READY) { diff --git a/libminifi/src/sitetosite/SiteToSiteClient.cpp b/libminifi/src/sitetosite/SiteToSiteClient.cpp index 26fadcc07..bb26e664f 100644 --- a/libminifi/src/sitetosite/SiteToSiteClient.cpp +++ b/libminifi/src/sitetosite/SiteToSiteClient.cpp @@ -483,13 +483,13 @@ int16_t SiteToSiteClient::send(const utils::Identifier& transactionID, DataPacke return -2; } } - if (packet->payload_.length() == 0 && len == 0) { + if (packet->payload_.empty() && len == 0) { if (flowFile->getResourceClaim() == nullptr) logger_->log_trace("no claim"); else logger_->log_trace("Flowfile empty {}", flowFile->getResourceClaim()->getContentFullPath()); } - } else if (packet->payload_.length() > 0) { + } else if (!packet->payload_.empty()) { len = packet->payload_.length(); { const auto ret = transaction->getStream().write(len); diff --git a/libminifi/test/flow-tests/FlowControllerTests.cpp b/libminifi/test/flow-tests/FlowControllerTests.cpp index a02cd268f..9e0bb90d8 100644 --- a/libminifi/test/flow-tests/FlowControllerTests.cpp +++ b/libminifi/test/flow-tests/FlowControllerTests.cpp @@ -90,7 +90,7 @@ Controller Services: )"; template<typename Fn> -bool verifyWithBusyWait(std::chrono::milliseconds timeout, Fn&& fn) { +bool verifyWithBusyWait(std::chrono::milliseconds timeout, const Fn& fn) { auto start = std::chrono::steady_clock::now(); while (std::chrono::steady_clock::now() - start < timeout) { if (fn()) { diff --git a/libminifi/test/libtest/integration/HTTPHandlers.cpp b/libminifi/test/libtest/integration/HTTPHandlers.cpp index fdea72c45..b76d6d089 100644 --- a/libminifi/test/libtest/integration/HTTPHandlers.cpp +++ b/libminifi/test/libtest/integration/HTTPHandlers.cpp @@ -406,10 +406,10 @@ void HeartbeatHandler::verifyProperties(const rapidjson::Value& operation_node, case minifi::c2::Operation::start: case minifi::c2::Operation::stop: { auto operands = getOperandsOfProperties(operation_node); - REQUIRE(operands.find("c2") != operands.end()); + REQUIRE(operands.contains("c2")); // FlowController is also present, but this handler has no way of knowing its UUID to test it for (const auto& component : verify_components) { - REQUIRE(operands.find(component) != operands.end()); + REQUIRE(operands.contains(component)); } break; } diff --git a/libminifi/test/libtest/unit/SingleProcessorTestController.cpp b/libminifi/test/libtest/unit/SingleProcessorTestController.cpp index 04ca5c276..fe2a04fc7 100644 --- a/libminifi/test/libtest/unit/SingleProcessorTestController.cpp +++ b/libminifi/test/libtest/unit/SingleProcessorTestController.cpp @@ -42,7 +42,7 @@ ProcessorTriggerResult SingleProcessorTestController::trigger() { return result; } -ProcessorTriggerResult SingleProcessorTestController::trigger(InputFlowFileData&& input_flow_file_data) { +ProcessorTriggerResult SingleProcessorTestController::trigger(InputFlowFileData input_flow_file_data) { input_->put(createFlowFile(input_flow_file_data.content, std::move(input_flow_file_data.attributes))); return trigger(); } @@ -84,7 +84,7 @@ core::Relationship SingleProcessorTestController::addDynamicRelationship(std::st return relationship; } -std::shared_ptr<core::FlowFile> SingleProcessorTestController::createFlowFile(const std::string_view content, std::unordered_map<std::string, std::string> attributes) { +std::shared_ptr<core::FlowFile> SingleProcessorTestController::createFlowFile(const std::string_view content, std::unordered_map<std::string, std::string> attributes) const { const auto flow_file = std::make_shared<FlowFileRecordImpl>(); for (auto& attr : std::move(attributes)) { flow_file->setAttribute(attr.first, std::move(attr.second)); diff --git a/libminifi/test/libtest/unit/SingleProcessorTestController.h b/libminifi/test/libtest/unit/SingleProcessorTestController.h index a12caa9a5..61acebc29 100644 --- a/libminifi/test/libtest/unit/SingleProcessorTestController.h +++ b/libminifi/test/libtest/unit/SingleProcessorTestController.h @@ -52,7 +52,7 @@ class SingleProcessorTestController : public TestController { } ProcessorTriggerResult trigger(); - ProcessorTriggerResult trigger(InputFlowFileData&& input_flow_file_data); + ProcessorTriggerResult trigger(InputFlowFileData input_flow_file_data); ProcessorTriggerResult trigger(const std::string_view input_flow_file_content, std::unordered_map<std::string, std::string> input_flow_file_attributes = {}); ProcessorTriggerResult trigger(std::vector<InputFlowFileData>&& input_flow_file_datas); bool triggerUntil(const std::unordered_map<core::Relationship, size_t>& expected_quantities, @@ -70,7 +70,7 @@ class SingleProcessorTestController : public TestController { std::shared_ptr<TestPlan> plan = createPlan(); private: - std::shared_ptr<core::FlowFile> createFlowFile(const std::string_view content, std::unordered_map<std::string, std::string> attributes); + std::shared_ptr<core::FlowFile> createFlowFile(const std::string_view content, std::unordered_map<std::string, std::string> attributes) const; core::Processor* processor_ = nullptr; std::unordered_map<core::Relationship, Connection*> outgoing_connections_; diff --git a/libminifi/test/libtest/unit/TestUtils.cpp b/libminifi/test/libtest/unit/TestUtils.cpp index ba4ee1f53..c1f18ba6b 100644 --- a/libminifi/test/libtest/unit/TestUtils.cpp +++ b/libminifi/test/libtest/unit/TestUtils.cpp @@ -174,7 +174,7 @@ std::error_code sendMessagesViaTCP(const std::vector<std::string_view>& contents asio::io_context io_context; asio::ip::tcp::socket socket(io_context); std::error_code err; - socket.connect(remote_endpoint, err); + std::ignore = socket.connect(remote_endpoint, err); if (err) return err; for (auto& content : contents) { @@ -192,7 +192,7 @@ std::error_code sendUdpDatagram(const asio::const_buffer content, const asio::ip asio::io_context io_context; asio::ip::udp::socket socket(io_context); std::error_code err; - socket.open(remote_endpoint.protocol(), err); + std::ignore = socket.open(remote_endpoint.protocol(), err); if (err) return err; socket.send_to(content, remote_endpoint, 0, err); @@ -211,7 +211,7 @@ bool isIPv6Disabled() { asio::io_context io_context; std::error_code error_code; asio::ip::tcp::socket socket_tcp(io_context); - socket_tcp.connect(asio::ip::tcp::endpoint(asio::ip::address_v6::loopback(), 10), error_code); + std::ignore = socket_tcp.connect(asio::ip::tcp::endpoint(asio::ip::address_v6::loopback(), 10), error_code); return error_code.value() == EADDRNOTAVAIL; } @@ -233,15 +233,15 @@ std::error_code sendMessagesViaSSL(const std::vector<std::string_view>& contents asio::ssl::stream<asio::ip::tcp::socket> socket(io_context, ctx); auto shutdown_socket = gsl::finally([&] { asio::error_code ec; - socket.lowest_layer().cancel(ec); - socket.shutdown(ec); + std::ignore = socket.lowest_layer().cancel(ec); + std::ignore = socket.shutdown(ec); }); asio::error_code err; - socket.lowest_layer().connect(remote_endpoint, err); + std::ignore = socket.lowest_layer().connect(remote_endpoint, err); if (err) { return err; } - socket.handshake(asio::ssl::stream_base::client, err); + std::ignore = socket.handshake(asio::ssl::stream_base::client, err); if (err) { return err; } diff --git a/libminifi/test/libtest/unit/WriteToFlowFileTestProcessor.h b/libminifi/test/libtest/unit/WriteToFlowFileTestProcessor.h index 81370e445..4e33764eb 100644 --- a/libminifi/test/libtest/unit/WriteToFlowFileTestProcessor.h +++ b/libminifi/test/libtest/unit/WriteToFlowFileTestProcessor.h @@ -15,6 +15,8 @@ * limitations under the License. */ +#pragma once + #include <string> #include <memory> #include <utility> @@ -28,8 +30,6 @@ #include "minifi-cpp/core/logging/Logger.h" #include "core/logging/LoggerConfiguration.h" -#pragma once - namespace org::apache::nifi::minifi::processors { class WriteToFlowFileTestProcessor : public core::ProcessorImpl { diff --git a/libminifi/test/unit/EnvironmentUtilsTests.cpp b/libminifi/test/unit/EnvironmentUtilsTests.cpp index 8f29592c3..fa252bb55 100644 --- a/libminifi/test/unit/EnvironmentUtilsTests.cpp +++ b/libminifi/test/unit/EnvironmentUtilsTests.cpp @@ -31,7 +31,7 @@ TEST_CASE("getenv already existing", "[getenv]") { auto res = utils::Environment::getEnvironmentVariable("PATH"); REQUIRE(res.has_value()); - REQUIRE(0 < res->length()); + REQUIRE(!res->empty()); } TEST_CASE("getenv not existing", "[getenv]") { @@ -91,6 +91,7 @@ TEST_CASE("unsetenv existing", "[unsetenv]") { TEST_CASE("multithreaded environment manipulation", "[getenv][setenv][unsetenv]") { std::vector<std::thread> threads; + threads.reserve(16U); for (size_t i = 0U; i < 16U; i++) { threads.emplace_back([](){ std::mt19937 gen(std::random_device { }()); @@ -107,7 +108,7 @@ TEST_CASE("multithreaded environment manipulation", "[getenv][setenv][unsetenv]" const size_t value_len = gen() % 256; std::vector<char> value(value_len + 1, '\0'); std::generate_n(value.begin(), value_len, [&]() -> char { - return 'A' + gen() % static_cast<uint8_t>('Z' - 'A'); + return gsl::narrow<char>('A' + (gen() % static_cast<uint8_t>('Z' - 'A'))); }); const bool overwrite = gen() % 2; utils::Environment::setEnvironmentVariable(env_name.c_str(), value.data(), overwrite); diff --git a/libminifi/test/unit/ExtendedKeyUsageTests.cpp b/libminifi/test/unit/ExtendedKeyUsageTests.cpp index b323924b1..990496e70 100644 --- a/libminifi/test/unit/ExtendedKeyUsageTests.cpp +++ b/libminifi/test/unit/ExtendedKeyUsageTests.cpp @@ -42,12 +42,12 @@ std::vector<unsigned char> createDerEncodedExtendedKeyUsage(const std::vector<ui der_encoded_key_usage[1] = gsl::narrow<unsigned char>(oids_size); for (size_t i = 0; i < last_bytes_of_oids.size(); ++i) { - der_encoded_key_usage[2 + OID_ENCODED_LENGTH * i] = OID_TAG; - der_encoded_key_usage[3 + OID_ENCODED_LENGTH * i] = OID_LENGTH; + der_encoded_key_usage[2 + (OID_ENCODED_LENGTH * i)] = OID_TAG; + der_encoded_key_usage[3 + (OID_ENCODED_LENGTH * i)] = OID_LENGTH; for (size_t j = 0; j < OID_PREFIX.size(); ++j) { - der_encoded_key_usage[4 + j + OID_ENCODED_LENGTH * i] = OID_PREFIX[j]; + der_encoded_key_usage[4 + j + (OID_ENCODED_LENGTH * i)] = OID_PREFIX[j]; } - der_encoded_key_usage[4 + OID_PREFIX.size() + OID_ENCODED_LENGTH * i] = last_bytes_of_oids[i]; + der_encoded_key_usage[4 + OID_PREFIX.size() + (OID_ENCODED_LENGTH * i)] = last_bytes_of_oids[i]; } return der_encoded_key_usage; } @@ -61,11 +61,11 @@ utils::tls::EXTENDED_KEY_USAGE_unique_ptr createExtendedKeyUsage(const std::vect } void testIsSubsetOf( - const utils::tls::ExtendedKeyUsage key_usage_empty, - const utils::tls::ExtendedKeyUsage key_usage_clientauth, - const utils::tls::ExtendedKeyUsage key_usage_clientauth_serverauth, - const utils::tls::ExtendedKeyUsage key_usage_clientauth_serverauth_codesigning, - const utils::tls::ExtendedKeyUsage key_usage_clientauth_serverauth_timestamping) { + const utils::tls::ExtendedKeyUsage& key_usage_empty, + const utils::tls::ExtendedKeyUsage& key_usage_clientauth, + const utils::tls::ExtendedKeyUsage& key_usage_clientauth_serverauth, + const utils::tls::ExtendedKeyUsage& key_usage_clientauth_serverauth_codesigning, + const utils::tls::ExtendedKeyUsage& key_usage_clientauth_serverauth_timestamping) { REQUIRE(key_usage_empty.isSubsetOf(key_usage_empty)); REQUIRE(key_usage_empty.isSubsetOf(key_usage_clientauth)); REQUIRE(key_usage_empty.isSubsetOf(key_usage_clientauth_serverauth)); diff --git a/libminifi/test/unit/FlowFileQueueSwapTests.cpp b/libminifi/test/unit/FlowFileQueueSwapTests.cpp index eb2fed349..9c737d86f 100644 --- a/libminifi/test/unit/FlowFileQueueSwapTests.cpp +++ b/libminifi/test/unit/FlowFileQueueSwapTests.cpp @@ -102,7 +102,7 @@ struct FlowFileComparator { }; struct VerifiedQueue { - void push(FlowFilePtr ff) { + void push(const FlowFilePtr& ff) { size(); impl.push(ff); ref_.insert(std::lower_bound(ref_.begin(), ref_.end(), ff, FlowFileComparator{}), ff); @@ -179,7 +179,7 @@ class SwapTestController : public TestController { queue_ = std::make_shared<VerifiedQueue>(std::static_pointer_cast<minifi::SwapManager>(flow_repo_)); } - void setLimits(size_t min_size, size_t target_size, size_t max_size) { + void setLimits(size_t min_size, size_t target_size, size_t max_size) const { queue_->impl.setMinSize(min_size); queue_->impl.setTargetSize(target_size); queue_->impl.setMaxSize(max_size); @@ -190,32 +190,32 @@ class SwapTestController : public TestController { std::initializer_list<unsigned > seconds; }; - void verifySwapEvents(std::vector<SwapEventPattern> events) { + void verifySwapEvents(const std::vector<SwapEventPattern>& events) const { REQUIRE(flow_repo_->swap_events_.size() == events.size()); size_t idx = 0; - for (auto& pattern : events) { + for (const auto& pattern : events) { REQUIRE(pattern.kind == flow_repo_->swap_events_[idx].kind); flow_repo_->swap_events_[idx].verifyTimes(pattern.seconds); } } - void clearSwapEvents() { + void clearSwapEvents() const { flow_repo_->swap_events_.clear(); } - void verifyQueue(std::initializer_list<unsigned> live, std::optional<std::initializer_list<unsigned>> inter, std::initializer_list<unsigned> swapped) { + void verifyQueue(std::initializer_list<unsigned> live, std::optional<std::initializer_list<unsigned>> inter, std::initializer_list<unsigned> swapped) const { queue_->verify(live, inter, swapped); } - void pushAll(std::initializer_list<unsigned> seconds) { + void pushAll(std::initializer_list<unsigned> seconds) const { for (auto sec : seconds) { auto ff = std::static_pointer_cast<core::FlowFile>(std::make_shared<minifi::FlowFileRecordImpl>()); ff->setPenaltyExpiration(Timepoint{std::chrono::seconds{sec}}); - queue_->push(std::move(ff)); + queue_->push(ff); } } - void popAll(std::initializer_list<unsigned> seconds, bool check_is_work_available = false) { + void popAll(std::initializer_list<unsigned> seconds, bool check_is_work_available = false) const { for (auto sec : seconds) { if (check_is_work_available) { REQUIRE(queue_->isWorkAvailable()); diff --git a/libminifi/test/unit/ResponseNodeLoaderTests.cpp b/libminifi/test/unit/ResponseNodeLoaderTests.cpp index 16b1adf99..bb18aa836 100644 --- a/libminifi/test/unit/ResponseNodeLoaderTests.cpp +++ b/libminifi/test/unit/ResponseNodeLoaderTests.cpp @@ -50,7 +50,7 @@ class ResponseNodeLoaderTestFixture { } protected: - template<typename T, typename = typename std::enable_if_t<std::is_base_of_v<minifi::core::ProcessorImpl, T>>> + template<typename T> requires(std::is_base_of_v<minifi::core::ProcessorImpl, T>) minifi::utils::Identifier addProcessor(const std::string& name) { auto processor = minifi::test::utils::make_processor<T>(name); auto uuid = processor->getUUID();
