Compare commits

...

4 Commits

Author SHA1 Message Date
Ayaz Salikhov
c88ffa7c92 chore: Use LLVM tools 21 (#3051) 2026-04-29 16:34:21 +01:00
Ayaz Salikhov
32aeda0ce7 chore: Fix clang-tidy 21 issues (#3052) 2026-04-29 16:17:32 +01:00
Ayaz Salikhov
f174b47f49 ci: Build image with LLVM tools 21 (#3049) 2026-04-29 14:25:10 +01:00
Ayaz Salikhov
80cdb3234a ci: Upload clang-tidy git diff (#3050) 2026-04-29 13:28:46 +01:00
6 changed files with 39 additions and 25 deletions

View File

@@ -20,7 +20,7 @@ concurrency:
env:
CONAN_PROFILE: clang
LLVM_TOOLS_VERSION: 20
LLVM_TOOLS_VERSION: 21
defaults:
run:
@@ -31,7 +31,7 @@ jobs:
if: github.event_name != 'push' || contains(github.event.head_commit.message, 'clang-tidy auto fixes')
runs-on: heavy
container:
image: ghcr.io/xrplf/clio-ci:14342e087ceb8b593027198bf9ef06a43833c696
image: ghcr.io/xrplf/clio-ci:f174b47f4909ae41b80406d836ab52adc39eacc6
permissions:
contents: write
@@ -84,6 +84,19 @@ jobs:
pre-commit run --all-files fix-local-includes || true
pre-commit run --all-files clang-format || true
- name: Generate git diff
if: ${{ steps.files_changed.outcome != 'success' }}
run: |
git diff | tee clang-tidy-git-diff.txt
- name: Upload clang-tidy diff output
if: ${{ steps.files_changed.outcome != 'success' }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: clang-tidy-git-diff
path: clang-tidy-git-diff.txt
retention-days: 30
- name: Create an issue
if: ${{ (steps.clang_tidy.outcome != 'success' || steps.files_changed.outcome != 'success') && github.event_name != 'pull_request' }}
id: create_issue

View File

@@ -61,7 +61,7 @@ RUN pip install -q --no-cache-dir \
pre-commit
# Install LLVM tools
ARG LLVM_TOOLS_VERSION=20
ARG LLVM_TOOLS_VERSION=21
RUN echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${LLVM_TOOLS_VERSION} main" >> /etc/apt/sources.list \
&& wget --progress=dot:giga -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -

View File

@@ -14,6 +14,7 @@ The image is based on Ubuntu 20.04 and contains:
- GDB 17.1
- gh 2.83.2
- git-cliff 2.11.0
- LLVM Tools 21
- mold 2.40.4
- Ninja 1.13.2
- Python 3.8

View File

@@ -13,7 +13,7 @@ concept TableSpec = requires {
// Check that 'row' exists and is a tuple
// keys types are at the beginning and the other fields types sort in alphabetical order
typename T::Row;
requires std::tuple_size<typename T::Row>::value >= 0; // Ensures 'row' is a tuple
requires std::tuple_size_v<typename T::Row> >= 0; // Ensures 'row' is a tuple
// Check that static constexpr members 'partitionKey' and 'tableName' exist
{ T::kPARTITION_KEY } -> std::convertible_to<char const*>;

View File

@@ -120,10 +120,10 @@ TEST_F(SubscriptionManagerTest, ReportCurrentSubscriber)
"book_changes": 2
})JSON";
web::SubscriptionContextPtr const session1 = std::make_shared<MockSession>();
MockSession* mockSession1 = dynamic_cast<MockSession*>(session1.get());
auto const* mockSession1 = dynamic_cast<MockSession const*>(session1.get());
web::SubscriptionContextPtr session2 = std::make_shared<MockSession>();
MockSession* mockSession2 = dynamic_cast<MockSession*>(session2.get());
auto const* mockSession2 = dynamic_cast<MockSession const*>(session2.get());
std::vector<web::SubscriptionContextInterface::OnDisconnectSlot> session2OnDisconnectSlots;
ON_CALL(*mockSession2, onDisconnect).WillByDefault([&session2OnDisconnectSlots](auto slot) {
session2OnDisconnectSlots.push_back(slot);

View File

@@ -166,8 +166,8 @@ TEST_F(RPCServerInfoHandlerTest, NoFeesErrorsOutWithInternal)
TEST_F(RPCServerInfoHandlerTest, DefaultOutputIsPresent)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
EXPECT_CALL(*backend_, fetchLedgerBySequence).WillOnce(Return(ledgerHeader));
@@ -209,8 +209,8 @@ TEST_F(RPCServerInfoHandlerTest, DefaultOutputIsPresent)
TEST_F(RPCServerInfoHandlerTest, AmendmentBlockedIsPresentIfSet)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
EXPECT_CALL(*backend_, fetchLedgerBySequence).WillOnce(Return(ledgerHeader));
@@ -250,8 +250,8 @@ TEST_F(RPCServerInfoHandlerTest, AmendmentBlockedIsPresentIfSet)
TEST_F(RPCServerInfoHandlerTest, CorruptionDetectedIsPresentIfSet)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
EXPECT_CALL(*backend_, fetchLedgerBySequence).WillOnce(Return(ledgerHeader));
@@ -291,7 +291,7 @@ TEST_F(RPCServerInfoHandlerTest, CorruptionDetectedIsPresentIfSet)
TEST_F(RPCServerInfoHandlerTest, CacheReportsEnabledFlagCorrectly)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
EXPECT_CALL(*backend_, fetchLedgerBySequence).Times(2).WillRepeatedly(Return(ledgerHeader));
@@ -346,9 +346,9 @@ TEST_F(RPCServerInfoHandlerTest, CacheReportsEnabledFlagCorrectly)
TEST_F(RPCServerInfoHandlerTest, AdminSectionPresentWhenAdminFlagIsSet)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockLoadBalancer const* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const empty = json::object{};
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
@@ -389,9 +389,9 @@ TEST_F(RPCServerInfoHandlerTest, AdminSectionPresentWhenAdminFlagIsSet)
TEST_F(RPCServerInfoHandlerTest, BackendCountersPresentWhenRequestWithParam)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockLoadBalancer const* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const empty = json::object{};
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
@@ -439,9 +439,9 @@ TEST_F(RPCServerInfoHandlerTest, BackendCountersPresentWhenRequestWithParam)
TEST_F(RPCServerInfoHandlerTest, RippledForwardedValuesPresent)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockLoadBalancer const* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const empty = json::object{};
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old
@@ -493,9 +493,9 @@ TEST_F(RPCServerInfoHandlerTest, RippledForwardedValuesPresent)
TEST_F(RPCServerInfoHandlerTest, RippledForwardedValuesMissingNoExceptionThrown)
{
MockLoadBalancer* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters* rawCountersPtr = mockCountersPtr_.get();
MockETLService* rawETLServicePtr = mockETLServicePtr_.get();
MockLoadBalancer const* rawBalancerPtr = mockLoadBalancerPtr_.get();
MockCounters const* rawCountersPtr = mockCountersPtr_.get();
MockETLService const* rawETLServicePtr = mockETLServicePtr_.get();
auto const empty = json::object{};
auto const ledgerHeader = createLedgerHeader(kLEDGER_HASH, 30, 3); // 3 seconds old