From f7275b7ad98d54b59be8498ac2fbbf29f215f7a8 Mon Sep 17 00:00:00 2001 From: Alex Kremer Date: Wed, 29 Apr 2026 16:17:35 +0100 Subject: [PATCH 01/11] chore: Enable clang-tidy v21 new checks (#7031) --- .clang-tidy | 5 + include/xrpl/basics/Log.h | 3 + include/xrpl/basics/Mutex.hpp | 4 +- include/xrpl/basics/Number.h | 16 +- include/xrpl/basics/SlabAllocator.h | 4 +- include/xrpl/basics/TaggedCache.h | 6 +- include/xrpl/basics/TaggedCache.ipp | 40 +- include/xrpl/basics/hardened_hash.h | 2 +- include/xrpl/basics/random.h | 2 +- include/xrpl/beast/asio/io_latency_probe.h | 10 +- include/xrpl/beast/test/yield_to.h | 2 +- include/xrpl/beast/unit_test/match.h | 32 +- include/xrpl/beast/unit_test/reporter.h | 2 + include/xrpl/beast/unit_test/runner.h | 8 +- include/xrpl/beast/unit_test/suite.h | 8 +- include/xrpl/beast/utility/Journal.h | 2 + include/xrpl/core/ClosureCounter.h | 6 +- include/xrpl/core/Coro.ipp | 16 +- include/xrpl/core/Job.h | 2 + include/xrpl/core/PeerReservationTable.h | 2 +- include/xrpl/core/detail/semaphore.h | 4 +- include/xrpl/json/Writer.h | 2 +- include/xrpl/json/json_reader.h | 2 + include/xrpl/json/json_value.h | 6 + include/xrpl/ledger/ApplyView.h | 2 + include/xrpl/ledger/PendingSaves.h | 8 +- include/xrpl/ledger/helpers/AMMHelpers.h | 45 +- include/xrpl/ledger/helpers/LendingHelpers.h | 2 +- include/xrpl/ledger/helpers/TokenHelpers.h | 14 +- include/xrpl/nodestore/NodeObject.h | 2 +- include/xrpl/nodestore/Types.h | 4 +- include/xrpl/nodestore/detail/codec.h | 6 +- include/xrpl/protocol/ErrorCodes.h | 4 + include/xrpl/protocol/LedgerFormats.h | 4 + include/xrpl/protocol/MultiApiJson.h | 7 +- include/xrpl/protocol/Permissions.h | 5 + include/xrpl/protocol/SField.h | 4 + include/xrpl/protocol/SOTemplate.h | 5 +- include/xrpl/protocol/STAmount.h | 2 +- include/xrpl/protocol/STBase.h | 2 + include/xrpl/protocol/STObject.h | 8 +- include/xrpl/protocol/STPathSet.h | 2 + include/xrpl/protocol/SeqProxy.h | 6 +- include/xrpl/protocol/TER.h | 12 + include/xrpl/protocol/TxFormats.h | 2 + include/xrpl/resource/Disposition.h | 2 +- include/xrpl/resource/detail/Entry.h | 2 +- include/xrpl/resource/detail/Kind.h | 2 +- include/xrpl/resource/detail/Logic.h | 48 +- include/xrpl/resource/detail/Tuning.h | 2 + include/xrpl/server/LoadFeeTrack.h | 18 +- include/xrpl/server/detail/BaseHTTPPeer.h | 10 +- include/xrpl/server/detail/ServerImpl.h | 2 + include/xrpl/server/detail/io_list.h | 4 +- include/xrpl/shamap/FullBelowCache.h | 2 + include/xrpl/tx/Transactor.h | 2 + include/xrpl/tx/applySteps.h | 2 +- .../tx/invariants/InvariantCheckPrivilege.h | 2 + include/xrpl/tx/invariants/MPTInvariant.h | 4 +- include/xrpl/tx/paths/detail/Steps.h | 2 +- include/xrpl/tx/paths/detail/StrandFlow.h | 7 +- .../tx/transactors/account/SignerListSet.h | 4 +- .../tx/transactors/system/LedgerStateFix.h | 2 +- src/libxrpl/basics/Log.cpp | 14 +- src/libxrpl/basics/Number.cpp | 15 +- src/libxrpl/basics/ResolverAsio.cpp | 2 +- .../beast/clock/basic_seconds_clock.cpp | 2 +- src/libxrpl/beast/insight/StatsDCollector.cpp | 8 +- .../beast/utility/beast_PropertyStream.cpp | 20 +- src/libxrpl/core/HashRouter.cpp | 14 +- src/libxrpl/core/detail/JobQueue.cpp | 18 +- src/libxrpl/core/detail/LoadMonitor.cpp | 6 +- src/libxrpl/core/detail/Workers.cpp | 10 +- src/libxrpl/crypto/csprng.cpp | 4 +- src/libxrpl/json/Output.cpp | 4 +- src/libxrpl/json/Writer.cpp | 16 +- src/libxrpl/ledger/AcceptedLedgerTx.cpp | 4 +- src/libxrpl/ledger/BookListeners.cpp | 6 +- src/libxrpl/ledger/CachedView.cpp | 4 +- src/libxrpl/ledger/Ledger.cpp | 2 +- src/libxrpl/ledger/helpers/AMMHelpers.cpp | 11 +- src/libxrpl/ledger/helpers/LendingHelpers.cpp | 25 +- src/libxrpl/ledger/helpers/TokenHelpers.cpp | 20 +- src/libxrpl/nodestore/BatchWriter.cpp | 4 +- src/libxrpl/nodestore/Database.cpp | 4 +- src/libxrpl/nodestore/DatabaseNodeImp.cpp | 10 +- src/libxrpl/nodestore/DatabaseRotatingImp.cpp | 28 +- src/libxrpl/nodestore/DecodedBlob.cpp | 10 +- src/libxrpl/nodestore/ManagerImp.cpp | 6 +- .../nodestore/backend/MemoryFactory.cpp | 14 +- src/libxrpl/nodestore/backend/NuDBFactory.cpp | 12 +- src/libxrpl/nodestore/backend/NullFactory.cpp | 2 +- .../nodestore/backend/RocksDBFactory.cpp | 15 +- src/libxrpl/protocol/AccountID.cpp | 4 +- src/libxrpl/protocol/Rules.cpp | 4 +- src/libxrpl/protocol/STAmount.cpp | 2 +- src/libxrpl/protocol/STNumber.cpp | 2 +- src/libxrpl/protocol/STObject.cpp | 12 +- src/libxrpl/protocol/STTx.cpp | 2 +- src/libxrpl/rdb/DatabaseCon.cpp | 6 +- src/libxrpl/rdb/SociDB.cpp | 6 +- src/libxrpl/resource/Consumer.cpp | 4 +- src/libxrpl/resource/ResourceManager.cpp | 2 +- src/libxrpl/server/InfoSub.cpp | 8 +- src/libxrpl/server/LoadFeeTrack.cpp | 4 +- src/libxrpl/shamap/SHAMap.cpp | 2 +- src/libxrpl/shamap/SHAMapDelta.cpp | 6 +- src/libxrpl/shamap/SHAMapInnerNode.cpp | 8 +- src/libxrpl/shamap/SHAMapNodeID.cpp | 2 + src/libxrpl/tx/applySteps.cpp | 6 +- src/libxrpl/tx/invariants/AMMInvariant.cpp | 12 +- src/libxrpl/tx/invariants/InvariantCheck.cpp | 11 +- src/libxrpl/tx/invariants/MPTInvariant.cpp | 21 +- src/libxrpl/tx/paths/BookStep.cpp | 2 +- src/libxrpl/tx/paths/DirectStep.cpp | 9 +- src/libxrpl/tx/paths/MPTEndpointStep.cpp | 12 +- src/libxrpl/tx/paths/OfferStream.cpp | 12 +- src/libxrpl/tx/paths/XRPEndpointStep.cpp | 2 +- .../tx/transactors/account/AccountSet.cpp | 8 +- .../tx/transactors/account/SignerListSet.cpp | 16 +- .../tx/transactors/check/CheckCash.cpp | 4 +- .../tx/transactors/dex/OfferCreate.cpp | 23 +- .../tx/transactors/escrow/EscrowCreate.cpp | 11 +- .../lending/LoanBrokerCoverClawback.cpp | 12 +- .../lending/LoanBrokerCoverWithdraw.cpp | 2 +- .../transactors/lending/LoanBrokerDelete.cpp | 3 +- .../tx/transactors/lending/LoanDelete.cpp | 2 +- .../tx/transactors/lending/LoanManage.cpp | 6 +- .../tx/transactors/lending/LoanPay.cpp | 38 +- .../tx/transactors/lending/LoanSet.cpp | 2 +- .../tx/transactors/nft/NFTokenAcceptOffer.cpp | 11 +- .../tx/transactors/system/LedgerStateFix.cpp | 6 +- src/libxrpl/tx/transactors/token/Clawback.cpp | 22 +- src/test/app/AMMExtended_test.cpp | 2 +- src/test/app/AMM_test.cpp | 9 +- src/test/app/Delegate_test.cpp | 10 +- src/test/app/Invariants_test.cpp | 2 +- src/test/app/LedgerHistory_test.cpp | 4 +- src/test/app/LoanBroker_test.cpp | 74 +- src/test/app/Loan_test.cpp | 43 +- src/test/app/MPToken_test.cpp | 52 +- src/test/app/NFTokenBurn_test.cpp | 4 +- src/test/app/NFTokenDir_test.cpp | 14 +- src/test/app/OfferMPT_test.cpp | 64 +- src/test/app/Offer_test.cpp | 84 +-- src/test/app/Path_test.cpp | 2 +- src/test/app/XChain_test.cpp | 41 +- src/test/basics/IOUAmount_test.cpp | 3 +- src/test/basics/Number_test.cpp | 210 +++--- .../beast/beast_io_latency_probe_test.cpp | 2 +- src/test/consensus/NegativeUNL_test.cpp | 4 +- src/test/core/Coroutine_test.cpp | 2 +- src/test/core/Workers_test.cpp | 2 +- src/test/jtx/AMMTest.h | 2 +- src/test/jtx/Account.h | 2 +- src/test/jtx/CaptureLogs.h | 4 +- src/test/jtx/TestHelpers.h | 2 +- src/test/jtx/directory.h | 2 +- src/test/jtx/impl/AMMTest.cpp | 2 +- src/test/jtx/impl/Account.cpp | 9 +- src/test/jtx/impl/WSClient.cpp | 4 +- src/test/jtx/impl/directory.cpp | 14 +- src/test/jtx/impl/ledgerStateFixes.cpp | 5 +- src/test/ledger/PaymentSandbox_test.cpp | 83 ++- src/test/ledger/View_test.cpp | 65 +- src/test/nodestore/TestBase.h | 16 +- src/test/nodestore/Timing_test.cpp | 6 +- src/test/nodestore/import_test.cpp | 2 +- src/test/overlay/TMGetObjectByHash_test.cpp | 3 +- src/test/overlay/reduce_relay_test.cpp | 7 +- src/test/overlay/short_read_test.cpp | 6 +- src/test/protocol/MultiApiJson_test.cpp | 14 +- src/test/protocol/STNumber_test.cpp | 7 +- src/test/protocol/SeqProxy_test.cpp | 6 +- src/test/resource/Logic_test.cpp | 8 +- src/test/rpc/AMMInfo_test.cpp | 34 +- src/test/rpc/GetAggregatePrice_test.cpp | 3 +- src/test/rpc/RPCCall_test.cpp | 701 +++++++++--------- src/test/shamap/FetchPack_test.cpp | 2 + src/test/shamap/common.h | 4 +- src/test/unit_test/SuiteJournal.h | 2 +- src/test/unit_test/multi_runner.cpp | 10 +- src/test/unit_test/multi_runner.h | 2 + src/tests/libxrpl/basics/Mutex.cpp | 2 +- src/tests/libxrpl/json/Writer.cpp | 26 +- src/xrpld/app/consensus/RCLConsensus.cpp | 12 +- src/xrpld/app/consensus/RCLConsensus.h | 2 +- src/xrpld/app/ledger/AccountStateSF.cpp | 3 +- src/xrpld/app/ledger/LedgerHolder.h | 6 +- src/xrpld/app/ledger/LedgerMaster.h | 2 +- src/xrpld/app/ledger/LedgerReplayer.h | 6 +- src/xrpld/app/ledger/LedgerToJson.h | 2 + src/xrpld/app/ledger/OpenLedger.h | 2 +- src/xrpld/app/ledger/OrderBookDBImpl.cpp | 16 +- src/xrpld/app/ledger/TransactionStateSF.cpp | 3 +- src/xrpld/app/ledger/detail/BuildLedger.cpp | 4 +- src/xrpld/app/ledger/detail/InboundLedger.cpp | 13 +- .../app/ledger/detail/InboundLedgers.cpp | 4 +- .../app/ledger/detail/InboundTransactions.cpp | 12 +- src/xrpld/app/ledger/detail/LedgerCleaner.cpp | 14 +- src/xrpld/app/ledger/detail/LedgerMaster.cpp | 60 +- .../app/ledger/detail/LedgerReplayer.cpp | 14 +- src/xrpld/app/ledger/detail/LedgerToJson.cpp | 2 +- src/xrpld/app/ledger/detail/LocalTxs.cpp | 8 +- src/xrpld/app/ledger/detail/OpenLedger.cpp | 12 +- .../app/ledger/detail/TransactionAcquire.cpp | 2 + .../app/ledger/detail/TransactionMaster.cpp | 4 +- src/xrpld/app/main/Application.cpp | 2 +- src/xrpld/app/main/LoadManager.cpp | 6 +- src/xrpld/app/main/Main.cpp | 2 +- src/xrpld/app/misc/NegativeUNLVote.cpp | 13 +- src/xrpld/app/misc/NegativeUNLVote.h | 2 +- src/xrpld/app/misc/NetworkOPs.cpp | 115 +-- src/xrpld/app/misc/SHAMapStoreImp.cpp | 44 +- src/xrpld/app/misc/SHAMapStoreImp.h | 4 +- src/xrpld/app/misc/Transaction.h | 4 +- src/xrpld/app/misc/TxQ.h | 6 +- src/xrpld/app/misc/ValidatorList.h | 14 +- src/xrpld/app/misc/ValidatorSite.h | 12 +- src/xrpld/app/misc/detail/AmendmentTable.cpp | 56 +- src/xrpld/app/misc/detail/Transaction.cpp | 14 +- src/xrpld/app/misc/detail/TxQ.cpp | 26 +- src/xrpld/app/misc/detail/ValidatorList.cpp | 22 +- src/xrpld/app/misc/detail/ValidatorSite.cpp | 40 +- src/xrpld/app/rdb/backend/detail/Node.cpp | 3 +- src/xrpld/consensus/Consensus.h | 4 +- src/xrpld/consensus/ConsensusParms.h | 14 +- src/xrpld/consensus/DisputedTx.h | 2 +- src/xrpld/consensus/Validations.h | 52 +- src/xrpld/overlay/detail/Cluster.cpp | 8 +- src/xrpld/overlay/detail/Message.cpp | 3 +- src/xrpld/overlay/detail/OverlayImpl.cpp | 36 +- src/xrpld/overlay/detail/OverlayImpl.h | 4 +- src/xrpld/overlay/detail/PeerImp.cpp | 59 +- src/xrpld/overlay/detail/PeerImp.h | 6 +- .../overlay/detail/PeerReservationTable.cpp | 8 +- src/xrpld/overlay/detail/TrafficCount.h | 233 +++--- src/xrpld/overlay/detail/Tuning.h | 2 + src/xrpld/overlay/detail/TxMetrics.cpp | 8 +- src/xrpld/peerfinder/Slot.h | 2 +- src/xrpld/peerfinder/detail/Checker.h | 6 +- src/xrpld/peerfinder/detail/Counts.h | 12 +- src/xrpld/peerfinder/detail/Logic.h | 74 +- .../peerfinder/detail/PeerfinderManager.cpp | 2 +- src/xrpld/peerfinder/detail/SlotImp.cpp | 17 +- src/xrpld/peerfinder/detail/StoreSqdb.h | 2 + src/xrpld/peerfinder/detail/Tuning.h | 4 + src/xrpld/perflog/detail/PerfLogImp.cpp | 34 +- src/xrpld/rpc/detail/AssetCache.cpp | 4 +- src/xrpld/rpc/detail/Handler.h | 2 + src/xrpld/rpc/detail/PathRequest.cpp | 14 +- src/xrpld/rpc/detail/PathRequestManager.cpp | 12 +- src/xrpld/rpc/detail/Pathfinder.cpp | 72 +- src/xrpld/rpc/detail/Pathfinder.h | 4 +- src/xrpld/rpc/detail/RPCSub.cpp | 8 +- src/xrpld/rpc/detail/ServerHandler.cpp | 6 +- src/xrpld/rpc/detail/TransactionSign.cpp | 2 +- src/xrpld/rpc/handlers/transaction/Submit.cpp | 2 +- src/xrpld/shamap/NodeFamily.cpp | 6 +- 259 files changed, 2193 insertions(+), 1888 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 6a967532db..6a7005b464 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -7,6 +7,7 @@ Checks: "-*, bugprone-bad-signal-to-kill-thread, bugprone-bool-pointer-implicit-conversion, bugprone-casting-through-void, + bugprone-capturing-this-in-member-variable, bugprone-chained-comparison, bugprone-compare-pointer-to-member-virtual-function, bugprone-copy-constructor-init, @@ -28,6 +29,7 @@ Checks: "-*, bugprone-misplaced-operator-in-strlen-in-alloc, bugprone-misplaced-pointer-arithmetic-in-alloc, bugprone-misplaced-widening-cast, + bugprone-misleading-setter-of-reference, bugprone-move-forwarding-reference, bugprone-multi-level-implicit-pointer-conversion, bugprone-multiple-new-in-one-expression, @@ -85,6 +87,7 @@ Checks: "-*, cppcoreguidelines-pro-type-static-cast-downcast, cppcoreguidelines-rvalue-reference-param-not-moved, cppcoreguidelines-use-default-member-init, + cppcoreguidelines-use-enum-class, cppcoreguidelines-virtual-class-destructor, hicpp-ignored-remove-result, misc-const-correctness, @@ -109,6 +112,7 @@ Checks: "-*, modernize-use-nodiscard, modernize-use-override, modernize-use-ranges, + modernize-use-scoped-lock, modernize-use-starts-ends-with, modernize-use-std-numbers, modernize-use-using, @@ -122,6 +126,7 @@ Checks: "-*, performance-move-constructor-init, performance-no-automatic-move, performance-trivially-destructible, + readability-ambiguous-smartptr-reset-call, readability-avoid-nested-conditional-operator, readability-avoid-return-with-void-value, readability-braces-around-statements, diff --git a/include/xrpl/basics/Log.h b/include/xrpl/basics/Log.h index 58cca4f486..5c63166d93 100644 --- a/include/xrpl/basics/Log.h +++ b/include/xrpl/basics/Log.h @@ -15,6 +15,7 @@ namespace xrpl { // DEPRECATED use beast::severities::Severity instead +// NOLINTNEXTLINE(cppcoreguidelines-use-enum-class) enum LogSeverity { lsINVALID = -1, // used to indicate an invalid severity lsTRACE = 0, // Very low-level progress information, details inside @@ -207,6 +208,8 @@ public: fromString(std::string const& s); private: + // Need to be named before converting + // NOLINTNEXTLINE(cppcoreguidelines-use-enum-class) enum { // Maximum line length for log messages. // If the message exceeds this length it will be truncated with diff --git a/include/xrpl/basics/Mutex.hpp b/include/xrpl/basics/Mutex.hpp index 5855ee2017..4432e27b4b 100644 --- a/include/xrpl/basics/Mutex.hpp +++ b/include/xrpl/basics/Mutex.hpp @@ -131,7 +131,7 @@ public: * @tparam LockType The type of lock to use * @return A lock on the mutex and a reference to the protected data */ - template