Page MenuHomePhabricator

clang-tidy: cover fuzzers and chronik cpp code
ClosedPublic

Authored by PiRK on Sep 22 2025, 12:10.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCa94c961835fc: clang-tidy: cover fuzzers and chronik cpp code
Summary

Trying to run a clang-tidy build on all code raises a few warnings as errors currently. Fix these errors and add chronik and bitcoin-fuzzers to the clang-tidy build on CI

/home/pierre/dev/bitcoin-abc/chronik/test/chronikbridge_tests.cpp:95:9: error: Called C++ object pointer is null [clang-analyzer-core.CallAndMessage,-warnings-as-errors]
        WITH_LOCK(chainman.GetMutex(), return chainman.ActiveTip())
        ^
Test Plan
cmake .. -GNinja -DBUILD_CHRONIK=1 -DENABLE_CLANG_TIDY=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
ninja all check bitcoin-fuzzers bench-bitcoin

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

PiRK requested review of this revision.Sep 22 2025, 12:10
contrib/teamcity/build-configurations.yml
292 ↗(On Diff #55771)

or should we add -DENABLE_CLANG_TIDY=ON on the build-chronik and build-fuzzers targets so we don't need to compile chronik for every single node diff?

Tail of the build log:

[51/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/multiplication_overflow.cpp.o
[52/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/message.cpp.o
[53/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/merkleblock.cpp.o
[54/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/parse_numbers.cpp.o
[55/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/net_permissions.cpp.o
[56/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/parse_script.cpp.o
[57/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/netaddress.cpp.o
[58/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/load_external_block_file.cpp.o
[59/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/node_eviction.cpp.o
[60/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/p2p_transport_deserializer.cpp.o
[61/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/parse_hd_keypath.cpp.o
[62/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/deserialize.cpp.o
[63/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/prevector.cpp.o
[64/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/parse_univalue.cpp.o
[65/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/net.cpp.o
[66/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script.cpp.o
FAILED: src/test/fuzz/CMakeFiles/fuzz.dir/script.cpp.o 
/usr/bin/cmake -E __run_co_compile --launcher=/usr/bin/ccache --tidy="/usr/bin/clang-tidy-16;-warnings-as-errors=*;--extra-arg-before=--driver-mode=g++" --source=/work/src/test/fuzz/script.cpp -- /usr/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_NO_CXX98_FUNCTION_BASE -DBUILD_BITCOIN_INTERNAL -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -DLEVELDB_ATOMIC_PRESENT -DLEVELDB_PLATFORM_POSIX -DOS_LINUX -DPROVIDE_FUZZ_MAIN_FUNCTION -I/work/src/. -I/work/abc-ci-builds/build-clang-tidy/src -I/work/src/univalue/include -I/work/abc-ci-builds/build-clang-tidy/src/crypto/.. -I/work/src/secp256k1/include -I/work/src/leveldb/include -I/work/chronik -I/work/abc-ci-builds/build-clang-tidy/cargo/build/x86_64-unknown-linux-gnu/cxxbridge -isystem /usr/include/jemalloc -isystem /usr/include/miniupnpc -g -O2 -fPIE -fvisibility=hidden -fstack-protector-all -Wstack-protector -fcf-protection=full -fstack-clash-protection -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wgnu -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Woverloaded-virtual -Wshadow -Wshadow-field -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-psabi -std=gnu++17 -MD -MT src/test/fuzz/CMakeFiles/fuzz.dir/script.cpp.o -MF src/test/fuzz/CMakeFiles/fuzz.dir/script.cpp.o.d -o src/test/fuzz/CMakeFiles/fuzz.dir/script.cpp.o -c /work/src/test/fuzz/script.cpp
/work/src/test/fuzz/script.cpp:47:19: error: the const qualified variable 'script' is copy-constructed from a const reference; consider making it a const reference [performance-unnecessary-copy-initialization,-warnings-as-errors]
    const CScript script{*script_opt};
                  ^
                 &
1718 warnings generated.
Suppressed 1717 warnings (1717 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
1 warning treated as error
[67/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/psbt.cpp.o
[68/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/pow.cpp.o
[69/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/primitives_transaction.cpp.o
[70/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/protocol.cpp.o
[71/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_flags.cpp.o
[72/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/random.cpp.o
[73/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/rolling_bloom_filter.cpp.o
[74/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_bitcoin_consensus.cpp.o
[75/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_descriptor_cache.cpp.o
[76/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/signature_checker.cpp.o
[77/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/spanparsing.cpp.o
[78/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_interpreter.cpp.o
[79/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_ops.cpp.o
[80/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/process_message.cpp.o
[81/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/process_messages.cpp.o
[82/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/secp256k1_ec_seckey_import_export_der.cpp.o
[83/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/secp256k1_ecdsa_signature_parse_der_lax.cpp.o
[84/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/scriptnum_ops.cpp.o
[85/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/span.cpp.o
[86/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_sign.cpp.o
[87/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/tx_in.cpp.o
[88/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/script_sigcache.cpp.o
[89/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/tx_out.cpp.o
[90/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/system.cpp.o
[91/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/socks5.cpp.o
[92/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/timedata.cpp.o
[93/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/strprintf.cpp.o
[94/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/string.cpp.o
[95/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/transaction.cpp.o
[96/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/txrequest.cpp.o
[97/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/util.cpp.o
[98/99] Building CXX object src/test/fuzz/CMakeFiles/fuzz.dir/validation_load_mempool.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

fix:

/work/src/test/fuzz/script.cpp:47:19: error: the const qualified variable 'script' is copy-constructed from a const reference; consider making it a const reference [performance-unnecessary-copy-initialization,-warnings-as-errors]
const CScript script{*script_opt};
This revision is now accepted and ready to land.Sep 22 2025, 22:51
This revision was automatically updated to reflect the committed changes.