Page MenuHomePhabricator

refactor: Make const refs vars where applicable and enable related clang-tidy checks
Needs ReviewPublic

Authored by PiRK on Sat, May 10, 09:56.

Details

Reviewers
None
Group Reviewers
Restricted Project
Summary

This avoids initializing variables with the copy-constructor of a non-trivially copyable type.
Automating this check can save us some brain bandwidth during reviews.

This is a backport of core#25707
Depends on D18072

Test Plan
cmake .. -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_CLANG_TIDY=ON
ninja all check-all`

Event Timeline

PiRK requested review of this revision.Sat, May 10, 09:56

Tail of the build log:

[406/581] Linking CXX executable src/bitcoin-tx
[407/581] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[408/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[409/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[410/581] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[411/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[412/581] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[413/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[414/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[415/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[416/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[417/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[418/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[419/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[420/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[421/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[422/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[423/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[424/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[425/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[426/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[427/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[428/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[429/581] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[430/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[431/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[432/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[433/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[434/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[435/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[436/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[437/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[438/581] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
FAILED: src/seeder/CMakeFiles/bitcoin-seeder.dir/main.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/seeder/main.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 -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 -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/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o -MF src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o.d -o src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o -c /work/src/seeder/main.cpp
/work/src/seeder/main.cpp:266:30: error: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy,-warnings-as-errors]
            for (CAddrReport rep : v) {
                             ^
                 const      &
1987 warnings generated.
Suppressed 1986 warnings (1986 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
[439/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[440/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[441/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[442/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[443/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[444/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[445/581] Linking CXX executable src/iguana/iguana
[446/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[447/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[448/581] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[449/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[450/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[451/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[452/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[453/581] Linking CXX static library src/wallet/libwallet.a
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1
PiRK edited the test plan for this revision. (Show Details)

i missed two

Tail of the build log:

[396/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[397/581] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[398/581] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[399/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[400/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[401/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[402/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[403/581] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[404/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[405/581] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[406/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[407/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[408/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[409/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[410/581] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[411/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[412/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[413/581] Linking CXX executable src/bitcoin-cli
[414/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[415/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[416/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[417/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[418/581] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[419/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[420/581] Linking CXX executable src/bitcoin-tx
[421/581] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[422/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[423/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[424/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[425/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[426/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[427/581] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[428/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[429/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[430/581] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[431/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[432/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[433/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[434/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[435/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[436/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[437/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[438/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[439/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[440/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[441/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[442/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[443/581] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[444/581] Linking CXX executable src/iguana/iguana
[445/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[446/581] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[447/581] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[448/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[449/581] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[450/581] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[451/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[452/581] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[453/581] Linking CXX static library src/wallet/libwallet.a
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

[196/521] Automatic MOC for target test_bitcoin-qt
[197/521] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/parse_name_tests.cpp.o
[198/521] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/write_name_tests.cpp.o
[199/521] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/eda_tests.cpp.o
[200/521] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/message_writer_tests.cpp.o
[201/521] Building CXX object src/pow/test/CMakeFiles/test-pow.dir/grasberg_tests.cpp.o
[202/521] Linking CXX executable src/pow/test/test-pow
[203/521] Test Bitcoin utilities...
[204/521] avalanche: testing processor_tests
[205/521] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/fixture.cpp.o
[206/521] pow: testing daa_tests
[207/521] Building CXX object src/seeder/test/CMakeFiles/test-seeder.dir/p2p_messaging_tests.cpp.o
[208/521] Running utility command for check-avalanche-processor_tests
[209/521] Running utility command for check-pow-daa_tests
[210/521] Running avalanche test suite
PASSED: avalanche test suite
[211/521] pow: testing eda_tests
[212/521] Running utility command for check-pow-eda_tests
[213/521] Linking CXX executable src/seeder/test/test-seeder
[214/521] pow: testing grasberg_tests
[215/521] seeder: testing db_tests
[216/521] Running utility command for check-pow-grasberg_tests
[217/521] Running utility command for check-seeder-db_tests
[218/521] seeder: testing message_writer_tests
[219/521] seeder: testing options_tests
[220/521] Running utility command for check-seeder-message_writer_tests
[221/521] Running utility command for check-seeder-options_tests
[222/521] seeder: testing p2p_messaging_tests
[223/521] seeder: testing parse_name_tests
[224/521] Running utility command for check-seeder-p2p_messaging_tests
[225/521] Running utility command for check-seeder-parse_name_tests
[226/521] seeder: testing write_name_tests
[227/521] Running utility command for check-seeder-write_name_tests
[228/521] Running seeder test suite
PASSED: seeder test suite
[229/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/bitcoinaddressvalidatortests.cpp.o
[230/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/test_bitcoin-qt_autogen/mocs_compilation.cpp.o
[231/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/util.cpp.o
[232/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/compattests.cpp.o
[233/521] pow: testing aserti32d_tests
[234/521] Running utility command for check-pow-aserti32d_tests
[235/521] Running pow test suite
PASSED: pow test suite
[236/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/optiontests.cpp.o
[237/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/guiutiltests.cpp.o
[238/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/rpcnestedtests.cpp.o
[239/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/uritests.cpp.o
[240/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/test_main.cpp.o
[241/521] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/script_tests.cpp.o
[242/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/apptests.cpp.o
[243/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/__/__/wallet/test/wallet_test_fixture.cpp.o
[244/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/paymentservertests.cpp.o
[245/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/addressbooktests.cpp.o
[246/521] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/wallettests.cpp.o
[247/521] Linking CXX executable src/qt/test/test_bitcoin-qt
[248/521] bitcoin-qt: testing test_bitcoin-qt
[249/521] Running bitcoin-qt test suite
PASSED: bitcoin-qt test suite
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

the CI keeps finding more when locally the build passes