From ba01878cb3acccccd9e3083be05fa32b3d4d4d45 Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Tue, 13 Oct 2026 14:32:26 +0200 Subject: [PATCH 1/4] clang-tidy: Remove redundant "typename" --- include/protozero/iterators.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/protozero/iterators.hpp b/include/protozero/iterators.hpp index 7a1bc433..4fb81d59 100644 --- a/include/protozero/iterators.hpp +++ b/include/protozero/iterators.hpp @@ -436,42 +436,42 @@ namespace std { /// @cond individual overloads do not need to be documented template <> - inline typename protozero::const_varint_iterator::difference_type + inline protozero::const_varint_iterator::difference_type distance>(protozero::const_varint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_varint_iterator last) { return protozero::const_varint_iterator::distance(first, last); } template <> - inline typename protozero::const_varint_iterator::difference_type + inline protozero::const_varint_iterator::difference_type distance>(protozero::const_varint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_varint_iterator last) { return protozero::const_varint_iterator::distance(first, last); } template <> - inline typename protozero::const_varint_iterator::difference_type + inline protozero::const_varint_iterator::difference_type distance>(protozero::const_varint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_varint_iterator last) { return protozero::const_varint_iterator::distance(first, last); } template <> - inline typename protozero::const_varint_iterator::difference_type + inline protozero::const_varint_iterator::difference_type distance>(protozero::const_varint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_varint_iterator last) { return protozero::const_varint_iterator::distance(first, last); } template <> - inline typename protozero::const_svarint_iterator::difference_type + inline protozero::const_svarint_iterator::difference_type distance>(protozero::const_svarint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_svarint_iterator last) { return protozero::const_svarint_iterator::distance(first, last); } template <> - inline typename protozero::const_svarint_iterator::difference_type + inline protozero::const_svarint_iterator::difference_type distance>(protozero::const_svarint_iterator first, // NOLINT(readability-inconsistent-declaration-parameter-name) protozero::const_svarint_iterator last) { return protozero::const_svarint_iterator::distance(first, last); From 823137c4182890c8481df7cecbe4441d1a4c74ca Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Tue, 13 Oct 2026 14:36:07 +0200 Subject: [PATCH 2/4] clang-tidy: Add some consts --- test/t/repeated_packed_double/reader_test_cases.cpp | 4 ++-- test/t/repeated_packed_float/reader_test_cases.cpp | 4 ++-- test/unit/test_varint.cpp | 2 +- tools/pbf-decoder.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/t/repeated_packed_double/reader_test_cases.cpp b/test/t/repeated_packed_double/reader_test_cases.cpp index 28a27333..27164edc 100644 --- a/test/t/repeated_packed_double/reader_test_cases.cpp +++ b/test/t/repeated_packed_double/reader_test_cases.cpp @@ -51,13 +51,13 @@ TEST_CASE("read repeated packed double field") { REQUIRE(it == it_range.end()); it = it_range.begin(); - auto it2 = it + 1; + const auto it2 = it + 1; REQUIRE(it2 > it); REQUIRE(it < it2); REQUIRE(it <= it_range.begin()); REQUIRE(it >= it_range.begin()); REQUIRE(*it2 == Approx(0.0)); - auto it3 = 1 + it; + const auto it3 = 1 + it; REQUIRE(*it3 == Approx(0.0)); auto it4 = it2 - 1; REQUIRE(*it4 == Approx(17.34)); diff --git a/test/t/repeated_packed_float/reader_test_cases.cpp b/test/t/repeated_packed_float/reader_test_cases.cpp index d76bea28..d8c765cc 100644 --- a/test/t/repeated_packed_float/reader_test_cases.cpp +++ b/test/t/repeated_packed_float/reader_test_cases.cpp @@ -27,7 +27,7 @@ TEST_CASE("read repeated packed float field") { protozero::pbf_reader item{abuffer.data() + n, abuffer.size() - n}; REQUIRE(item.next()); - auto it_range = item.get_packed_float(); + const auto it_range = item.get_packed_float(); REQUIRE_FALSE(item.next()); REQUIRE(*it_range.begin() == Approx(17.34F)); @@ -39,7 +39,7 @@ TEST_CASE("read repeated packed float field") { protozero::pbf_reader item{abuffer.data() + n, abuffer.size() - n}; REQUIRE(item.next()); - auto it_range = item.get_packed_float(); + const auto it_range = item.get_packed_float(); REQUIRE_FALSE(item.next()); auto it = it_range.begin(); diff --git a/test/unit/test_varint.cpp b/test/unit/test_varint.cpp index f7f36b44..aed7490b 100644 --- a/test/unit/test_varint.cpp +++ b/test/unit/test_varint.cpp @@ -371,7 +371,7 @@ TEST_CASE("decode multiple varints in sequence") { template void test_overlong_varint_throws() { - std::string buffer(10, static_cast(0xffU)); + const std::string buffer(10, static_cast(0xffU)); const char* b = buffer.data(); const char* const end = buffer.data() + buffer.size(); REQUIRE_THROWS_AS(Decoder::decode(&b, end), protozero::varint_too_long_exception); diff --git a/tools/pbf-decoder.cpp b/tools/pbf-decoder.cpp index 4580c8df..37aee852 100644 --- a/tools/pbf-decoder.cpp +++ b/tools/pbf-decoder.cpp @@ -90,7 +90,7 @@ bool decode_string(std::stringstream& out, const protozero::data_view view) { template void print_number_range(std::stringstream& out, const TRange& range) { bool first = true; - for (auto val : range) { + for (const auto val : range) { if (first) { first = false; } else { From 4901bb5a6bcd76136b449fd5feec78f0368069be Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Tue, 13 Oct 2026 14:43:27 +0200 Subject: [PATCH 3/4] Disable some clang-tidy warnings --- .clang-tidy | 17 ++++++++++++++++- tools/pbf-fuzzer.cpp | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 89b909b3..e633c8ca 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,5 @@ --- -Checks: '*,-altera-*,-boost-use-ranges,-bugprone-chained-comparison,-bugprone-easily-swappable-parameters,-bugprone-signed-char-misuse,-cert-dcl21-cpp,-cert-err58-cpp,-cert-err60-cpp,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-macro-usage,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-type-reinterpret-cast,-fuchsia-*,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-no-array-decay,-hicpp-vararg,-llvmlibc-*,-misc-no-recursion,-modernize-avoid-c-arrays,-modernize-use-trailing-return-type,-readability-function-cognitive-complexity,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers' +Checks: '*,-altera-*,-boost-use-ranges,-bugprone-chained-comparison,-bugprone-easily-swappable-parameters,-bugprone-signed-char-misuse,-cert-dcl21-cpp,-cert-err58-cpp,-cert-err60-cpp,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-macro-usage,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-type-reinterpret-cast,-fuchsia-*,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-no-array-decay,-hicpp-vararg,-llvmlibc-*,-llvm-prefer-static-over-anonymous-namespace,-llvm-use-ranges,-misc-include-cleaner,-misc-no-recursion,-modernize-avoid-c-arrays,-modernize-use-trailing-return-type,-readability-function-cognitive-complexity,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers,-readability-trailing-comma,-zircon-*' # # Disabled checks: # @@ -66,6 +66,15 @@ Checks: '*,-altera-*,-boost-use-ranges,-bugprone-chained-comparison,-bugprone-ea # llvmlibc-* # Doesn't apply. # +# llvm-prefer-static-over-anonymous-namespace +# Not our style. +# +# llvm-use-ranges +# Not using the llvm library. +# +# misc-include-cleaner +# Doesn't work well enough in practice. +# # misc-no-recursion # Nothing wrong with recursion. # @@ -81,6 +90,12 @@ Checks: '*,-altera-*,-boost-use-ranges,-bugprone-chained-comparison,-bugprone-ea # readability-implicit-bool-conversion # Not necessarily more readable. # +# readability-trailing-comma +# Not our style. +# +# zircon-* +# Does not apply. +# #WarningsAsErrors: '*' HeaderFilterRegex: '\/include\/' ... diff --git a/tools/pbf-fuzzer.cpp b/tools/pbf-fuzzer.cpp index d6ef6f84..d9c69ef9 100644 --- a/tools/pbf-fuzzer.cpp +++ b/tools/pbf-fuzzer.cpp @@ -4,7 +4,7 @@ // See https://github.com/google/benchmark/blob/main/LICENSE template inline __attribute__((always_inline)) void DoNotOptimize(Tp const& value) { - asm volatile("" : : "r,m"(value) : "memory"); + asm volatile("" : : "r,m"(value) : "memory"); // NOLINT(portability-no-assembler) } template From d269068842b43f6fdf840b981116f88c96a2e0fb Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Thu, 15 Oct 2026 21:19:59 +0200 Subject: [PATCH 4/4] Also disable hicpp-no-assembler --- tools/pbf-fuzzer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pbf-fuzzer.cpp b/tools/pbf-fuzzer.cpp index d9c69ef9..c2fe86dd 100644 --- a/tools/pbf-fuzzer.cpp +++ b/tools/pbf-fuzzer.cpp @@ -4,7 +4,7 @@ // See https://github.com/google/benchmark/blob/main/LICENSE template inline __attribute__((always_inline)) void DoNotOptimize(Tp const& value) { - asm volatile("" : : "r,m"(value) : "memory"); // NOLINT(portability-no-assembler) + asm volatile("" : : "r,m"(value) : "memory"); // NOLINT(hicpp-no-assembler,portability-no-assembler) } template