From faa23738fc2576e412edb04a4004fab537a3098e Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Sat, 6 Dec 2025 10:31:54 +0100 Subject: [PATCH] refactor: Enable clang-tidy bugprone-unused-return-value This requires some small refactors to silence false-positive warnings. Also, expand the bugprone-unused-return-value.CheckedReturnTypes option to include util::Result, and util::Expected. --- src/.clang-tidy | 3 +++ src/bench/coin_selection.cpp | 2 +- src/bitcoin-cli.cpp | 3 +-- src/httpserver.cpp | 2 +- src/ipc/test/ipc_test.cpp | 4 +++- src/wallet/test/fuzz/spend.cpp | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/.clang-tidy b/src/.clang-tidy index 544bd5ac0c1..da53a588c2e 100644 --- a/src/.clang-tidy +++ b/src/.clang-tidy @@ -7,6 +7,7 @@ bugprone-string-constructor, bugprone-use-after-move, bugprone-lambda-function-name, bugprone-unhandled-self-assignment, +bugprone-unused-return-value, misc-unused-using-decls, misc-no-recursion, modernize-deprecated-headers, @@ -36,3 +37,5 @@ CheckOptions: value: false - key: bugprone-unhandled-self-assignment.WarnOnlyIfThisHasSuspiciousField value: false + - key: bugprone-unused-return-value.CheckedReturnTypes + value: '^::std::error_code$;^::std::error_condition$;^::std::errc$;^::std::expected$;^::util::Result$;^::util::Expected$' diff --git a/src/bench/coin_selection.cpp b/src/bench/coin_selection.cpp index dfefa1b5306..2150d800c9f 100644 --- a/src/bench/coin_selection.cpp +++ b/src/bench/coin_selection.cpp @@ -130,7 +130,7 @@ static void BnBExhaustion(benchmark::Bench& bench) bench.run([&] { // Benchmark CAmount target = make_hard_case(17, utxo_pool); - SelectCoinsBnB(utxo_pool, target, 0, MAX_STANDARD_TX_WEIGHT); // Should exhaust + [[maybe_unused]] auto _{SelectCoinsBnB(utxo_pool, target, /*cost_of_change=*/0, MAX_STANDARD_TX_WEIGHT)}; // Should exhaust // Cleanup utxo_pool.clear(); diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 279aa89e88e..d6fcaa841a6 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -899,8 +899,7 @@ static UniValue CallRPC(BaseRequestHandler* rh, const std::string& strMethod, co throw CConnectionFailed("uri-encode failed"); } } - int r = evhttp_make_request(evcon.get(), req.get(), EVHTTP_REQ_POST, endpoint.c_str()); - req.release(); // ownership moved to evcon in above call + int r = evhttp_make_request(evcon.get(), req.release(), EVHTTP_REQ_POST, endpoint.c_str()); if (r != 0) { throw CConnectionFailed("send http request failed"); } diff --git a/src/httpserver.cpp b/src/httpserver.cpp index 5644ddbcc13..abfcb455e14 100644 --- a/src/httpserver.cpp +++ b/src/httpserver.cpp @@ -330,7 +330,7 @@ static void http_request_cb(struct evhttp_request* req, void* arg) std::unique_ptr item(new HTTPWorkItem(std::move(hreq), path, i->handler)); assert(g_work_queue); if (g_work_queue->Enqueue(item.get())) { - item.release(); /* if true, queue took ownership */ + [[maybe_unused]] auto _{item.release()}; /* if true, queue took ownership */ } else { LogWarning("Request rejected because http work queue depth exceeded, it can be increased with the -rpcworkqueue= setting"); item->req->WriteReply(HTTP_SERVICE_UNAVAILABLE, "Work queue depth exceeded"); diff --git a/src/ipc/test/ipc_test.cpp b/src/ipc/test/ipc_test.cpp index a350d60b5d8..506facdecf3 100644 --- a/src/ipc/test/ipc_test.cpp +++ b/src/ipc/test/ipc_test.cpp @@ -63,7 +63,9 @@ void IpcPipeTest() auto foo_client = std::make_unique>( connection_client->m_rpc_system->bootstrap(mp::ServerVatId().vat_id).castAs(), connection_client.get(), /* destroy_connection= */ true); - connection_client.release(); + { + [[maybe_unused]] auto _{connection_client.release()}; + } foo_promise.set_value(std::move(foo_client)); auto connection_server = std::make_unique(loop, kj::mv(pipe.ends[1]), [&](mp::Connection& connection) { diff --git a/src/wallet/test/fuzz/spend.cpp b/src/wallet/test/fuzz/spend.cpp index 552364a667d..99bc5345a34 100644 --- a/src/wallet/test/fuzz/spend.cpp +++ b/src/wallet/test/fuzz/spend.cpp @@ -98,7 +98,7 @@ FUZZ_TARGET(wallet_create_transaction, .init = initialize_setup) std::optional change_pos; if (fuzzed_data_provider.ConsumeBool()) change_pos = fuzzed_data_provider.ConsumeIntegral(); - (void)CreateTransaction(*fuzzed_wallet.wallet, recipients, change_pos, coin_control); + [[maybe_unused]] auto _{CreateTransaction(*fuzzed_wallet.wallet, recipients, change_pos, coin_control)}; } } // namespace } // namespace wallet