diff options
author | MarcoFalke <falke.marco@gmail.com> | 2018-04-01 18:30:17 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2018-04-01 18:30:21 -0400 |
commit | 0c5f67b8e5d9a502c6d321c5e0696bc3e9b4690d (patch) | |
tree | 157e9d84196abfbdb59270e3829e6b0cb4c4bde2 | |
parent | 9beded58606606b00e70ae76020ac433569b901e (diff) | |
parent | 3bcc0059b82b1d482d499d4d8f09118617074a5b (diff) |
Merge #12757: Clarify include guard naming convention
3bcc0059b8 Add lint-include-guards.sh which checks include guard consistency (practicalswift)
8fd6af89a0 Fix missing or inconsistent include guards (practicalswift)
8af65d96f4 Document include guard convention (practicalswift)
Pull request description:
* **Documentation**: Document include guard convention
* **Fix**: Fix missing or inconsistent include guards
* **Regression test**: Add `lint-include-guards.sh` which checks include guard consistency
Tree-SHA512: 8171878f60fd08ccbea943a11e835195750592abb9d7ab74eaa4265ae7fac523b1da9d31ca13d6ab73dd596e49986bfb7593c696e5f39567c93e610165bc2acc
-rwxr-xr-x | contrib/devtools/lint-include-guards.sh | 29 | ||||
-rw-r--r-- | doc/developer-notes.md | 10 | ||||
-rw-r--r-- | src/bech32.h | 5 | ||||
-rw-r--r-- | src/bench/perf.h | 6 | ||||
-rw-r--r-- | src/blockencodings.h | 6 | ||||
-rw-r--r-- | src/consensus/merkle.h | 6 | ||||
-rw-r--r-- | src/key_io.h | 6 | ||||
-rw-r--r-- | src/policy/fees.h | 6 | ||||
-rw-r--r-- | src/qt/test/paymentrequestdata.h | 5 | ||||
-rw-r--r-- | src/qt/test/rpcnestedtests.h | 6 | ||||
-rw-r--r-- | src/rpc/client.h | 6 | ||||
-rw-r--r-- | src/rpc/protocol.h | 6 | ||||
-rw-r--r-- | src/rpc/register.h | 6 | ||||
-rw-r--r-- | src/rpc/server.h | 6 | ||||
-rw-r--r-- | src/script/bitcoinconsensus.h | 6 | ||||
-rw-r--r-- | src/versionbits.h | 6 | ||||
-rw-r--r-- | src/wallet/coinselection.h | 6 | ||||
-rw-r--r-- | src/wallet/test/wallet_test_fixture.h | 7 | ||||
-rw-r--r-- | src/wallet/walletutil.h | 6 |
19 files changed, 94 insertions, 46 deletions
diff --git a/contrib/devtools/lint-include-guards.sh b/contrib/devtools/lint-include-guards.sh new file mode 100755 index 0000000000..6a0dd556bb --- /dev/null +++ b/contrib/devtools/lint-include-guards.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright (c) 2018 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +# +# Check include guards. + +HEADER_ID_PREFIX="BITCOIN_" +HEADER_ID_SUFFIX="_H" + +REGEXP_EXCLUDE_FILES_WITH_PREFIX="src/(crypto/ctaes/|leveldb/|secp256k1/|tinyformat.h|univalue/)" + +EXIT_CODE=0 +for HEADER_FILE in $(git ls-files -- "*.h" | grep -vE "^${REGEXP_EXCLUDE_FILES_WITH_PREFIX}") +do + HEADER_ID_BASE=$(cut -f2- -d/ <<< "${HEADER_FILE}" | sed "s/\.h$//g" | tr / _ | tr "[:lower:]" "[:upper:]") + HEADER_ID="${HEADER_ID_PREFIX}${HEADER_ID_BASE}${HEADER_ID_SUFFIX}" + if [[ $(grep -cE "^#(ifndef|define) ${HEADER_ID}" "${HEADER_FILE}") != 2 ]]; then + echo "${HEADER_FILE} seems to be missing the expected include guard:" + echo " #ifndef ${HEADER_ID}" + echo " #define ${HEADER_ID}" + echo " ..." + echo " #endif // ${HEADER_ID}" + echo + EXIT_CODE=1 + fi +done +exit ${EXIT_CODE} diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 7a033b28d4..540f2e8b84 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -606,6 +606,16 @@ namespace { source file into account. This allows quoted includes to stand out more when the location of the source file actually is relevant. +- Use include guards to avoid the problem of double inclusion. The header file + `foo/bar.h` should use the include guard identifier `BITCOIN_FOO_BAR_H`, e.g. + +```c++ +#ifndef BITCOIN_FOO_BAR_H +#define BITCOIN_FOO_BAR_H +... +#endif // BITCOIN_FOO_BAR_H +``` + GUI ----- diff --git a/src/bech32.h b/src/bech32.h index 7ef7b22213..2e2823e974 100644 --- a/src/bech32.h +++ b/src/bech32.h @@ -9,6 +9,9 @@ // // For more information, see BIP 173. +#ifndef BITCOIN_BECH32_H +#define BITCOIN_BECH32_H + #include <stdint.h> #include <string> #include <vector> @@ -23,3 +26,5 @@ std::string Encode(const std::string& hrp, const std::vector<uint8_t>& values); std::pair<std::string, std::vector<uint8_t>> Decode(const std::string& str); } // namespace bech32 + +#endif // BITCOIN_BECH32_H diff --git a/src/bench/perf.h b/src/bench/perf.h index 681bd0c8a2..73ea8b9647 100644 --- a/src/bench/perf.h +++ b/src/bench/perf.h @@ -3,8 +3,8 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. /** Functions for measurement of CPU cycles */ -#ifndef H_PERF -#define H_PERF +#ifndef BITCOIN_BENCH_PERF_H +#define BITCOIN_BENCH_PERF_H #include <stdint.h> @@ -34,4 +34,4 @@ uint64_t perf_cpucycles(void); void perf_init(void); void perf_fini(void); -#endif // H_PERF +#endif // BITCOIN_BENCH_PERF_H diff --git a/src/blockencodings.h b/src/blockencodings.h index f80821aa65..3a0828b307 100644 --- a/src/blockencodings.h +++ b/src/blockencodings.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_BLOCK_ENCODINGS_H -#define BITCOIN_BLOCK_ENCODINGS_H +#ifndef BITCOIN_BLOCKENCODINGS_H +#define BITCOIN_BLOCKENCODINGS_H #include <primitives/block.h> @@ -206,4 +206,4 @@ public: ReadStatus FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing); }; -#endif +#endif // BITCOIN_BLOCKENCODINGS_H diff --git a/src/consensus/merkle.h b/src/consensus/merkle.h index d57bb3412e..0afb73adb5 100644 --- a/src/consensus/merkle.h +++ b/src/consensus/merkle.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_MERKLE -#define BITCOIN_MERKLE +#ifndef BITCOIN_CONSENSUS_MERKLE_H +#define BITCOIN_CONSENSUS_MERKLE_H #include <stdint.h> #include <vector> @@ -35,4 +35,4 @@ uint256 BlockWitnessMerkleRoot(const CBlock& block, bool* mutated = nullptr); */ std::vector<uint256> BlockMerkleBranch(const CBlock& block, uint32_t position); -#endif +#endif // BITCOIN_CONSENSUS_MERKLE_H diff --git a/src/key_io.h b/src/key_io.h index 6fc9a8059a..d75b5b31c8 100644 --- a/src/key_io.h +++ b/src/key_io.h @@ -3,8 +3,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_KEYIO_H -#define BITCOIN_KEYIO_H +#ifndef BITCOIN_KEY_IO_H +#define BITCOIN_KEY_IO_H #include <chainparams.h> #include <key.h> @@ -26,4 +26,4 @@ CTxDestination DecodeDestination(const std::string& str); bool IsValidDestinationString(const std::string& str); bool IsValidDestinationString(const std::string& str, const CChainParams& params); -#endif // BITCOIN_KEYIO_H +#endif // BITCOIN_KEY_IO_H diff --git a/src/policy/fees.h b/src/policy/fees.h index 7f80fc92c2..afb4746def 100644 --- a/src/policy/fees.h +++ b/src/policy/fees.h @@ -2,8 +2,8 @@ // Copyright (c) 2009-2017 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_POLICYESTIMATOR_H -#define BITCOIN_POLICYESTIMATOR_H +#ifndef BITCOIN_POLICY_FEES_H +#define BITCOIN_POLICY_FEES_H #include <amount.h> #include <policy/feerate.h> @@ -294,4 +294,4 @@ private: FastRandomContext insecure_rand; }; -#endif /*BITCOIN_POLICYESTIMATOR_H */ +#endif // BITCOIN_POLICY_FEES_H diff --git a/src/qt/test/paymentrequestdata.h b/src/qt/test/paymentrequestdata.h index 74a2db8ea2..8e5a259f68 100644 --- a/src/qt/test/paymentrequestdata.h +++ b/src/qt/test/paymentrequestdata.h @@ -2,6 +2,9 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#ifndef BITCOIN_QT_TEST_PAYMENTREQUESTDATA_H +#define BITCOIN_QT_TEST_PAYMENTREQUESTDATA_H + // // Data for paymentservertests.cpp // @@ -458,3 +461,5 @@ iEBFUrBDJZU+UEezGwr7/zoECjo5ZY3PmtZcM2sILNjyweJF6XVzGqTxUw6pN6sW\ XR2T3Gy2LzRvhVA25QgGqpz0/juS2BtmNbsZPkN9gMMwKimgzc+PuCzmEKwPK9cQ\ YQ==\ "; + +#endif // BITCOIN_QT_TEST_PAYMENTREQUESTDATA_H diff --git a/src/qt/test/rpcnestedtests.h b/src/qt/test/rpcnestedtests.h index 0ce1c66f44..7b3b38f62e 100644 --- a/src/qt/test/rpcnestedtests.h +++ b/src/qt/test/rpcnestedtests.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_QT_TEST_RPC_NESTED_TESTS_H -#define BITCOIN_QT_TEST_RPC_NESTED_TESTS_H +#ifndef BITCOIN_QT_TEST_RPCNESTEDTESTS_H +#define BITCOIN_QT_TEST_RPCNESTEDTESTS_H #include <QObject> #include <QTest> @@ -19,4 +19,4 @@ class RPCNestedTests : public QObject void rpcNestedTests(); }; -#endif // BITCOIN_QT_TEST_RPC_NESTED_TESTS_H +#endif // BITCOIN_QT_TEST_RPCNESTEDTESTS_H diff --git a/src/rpc/client.h b/src/rpc/client.h index e7cf035d8f..e09e1dedf3 100644 --- a/src/rpc/client.h +++ b/src/rpc/client.h @@ -3,8 +3,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_RPCCLIENT_H -#define BITCOIN_RPCCLIENT_H +#ifndef BITCOIN_RPC_CLIENT_H +#define BITCOIN_RPC_CLIENT_H #include <univalue.h> @@ -19,4 +19,4 @@ UniValue RPCConvertNamedValues(const std::string& strMethod, const std::vector<s */ UniValue ParseNonRFCJSONValue(const std::string& strVal); -#endif // BITCOIN_RPCCLIENT_H +#endif // BITCOIN_RPC_CLIENT_H diff --git a/src/rpc/protocol.h b/src/rpc/protocol.h index ff63bf4901..4a265735d2 100644 --- a/src/rpc/protocol.h +++ b/src/rpc/protocol.h @@ -3,8 +3,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_RPCPROTOCOL_H -#define BITCOIN_RPCPROTOCOL_H +#ifndef BITCOIN_RPC_PROTOCOL_H +#define BITCOIN_RPC_PROTOCOL_H #include <fs.h> @@ -104,4 +104,4 @@ void DeleteAuthCookie(); /** Parse JSON-RPC batch reply into a vector */ std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue &in, size_t num); -#endif // BITCOIN_RPCPROTOCOL_H +#endif // BITCOIN_RPC_PROTOCOL_H diff --git a/src/rpc/register.h b/src/rpc/register.h index 49aee2365f..b689740681 100644 --- a/src/rpc/register.h +++ b/src/rpc/register.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_RPCREGISTER_H -#define BITCOIN_RPCREGISTER_H +#ifndef BITCOIN_RPC_REGISTER_H +#define BITCOIN_RPC_REGISTER_H /** These are in one header file to avoid creating tons of single-function * headers for everything under src/rpc/ */ @@ -29,4 +29,4 @@ static inline void RegisterAllCoreRPCCommands(CRPCTable &t) RegisterRawTransactionRPCCommands(t); } -#endif +#endif // BITCOIN_RPC_REGISTER_H diff --git a/src/rpc/server.h b/src/rpc/server.h index 7fc300f554..373914885c 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -3,8 +3,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_RPCSERVER_H -#define BITCOIN_RPCSERVER_H +#ifndef BITCOIN_RPC_SERVER_H +#define BITCOIN_RPC_SERVER_H #include <amount.h> #include <rpc/protocol.h> @@ -206,4 +206,4 @@ std::string JSONRPCExecBatch(const JSONRPCRequest& jreq, const UniValue& vReq); // Retrieves any serialization flags requested in command line argument int RPCSerializationFlags(); -#endif // BITCOIN_RPCSERVER_H +#endif // BITCOIN_RPC_SERVER_H diff --git a/src/script/bitcoinconsensus.h b/src/script/bitcoinconsensus.h index bb94c17528..5973808fa5 100644 --- a/src/script/bitcoinconsensus.h +++ b/src/script/bitcoinconsensus.h @@ -3,8 +3,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_BITCOINCONSENSUS_H -#define BITCOIN_BITCOINCONSENSUS_H +#ifndef BITCOIN_SCRIPT_BITCOINCONSENSUS_H +#define BITCOIN_SCRIPT_BITCOINCONSENSUS_H #include <stdint.h> @@ -80,4 +80,4 @@ EXPORT_SYMBOL unsigned int bitcoinconsensus_version(); #undef EXPORT_SYMBOL -#endif // BITCOIN_BITCOINCONSENSUS_H +#endif // BITCOIN_SCRIPT_BITCOINCONSENSUS_H diff --git a/src/versionbits.h b/src/versionbits.h index 65cf308c79..8962a65057 100644 --- a/src/versionbits.h +++ b/src/versionbits.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_CONSENSUS_VERSIONBITS -#define BITCOIN_CONSENSUS_VERSIONBITS +#ifndef BITCOIN_VERSIONBITS_H +#define BITCOIN_VERSIONBITS_H #include <chain.h> #include <map> @@ -77,4 +77,4 @@ BIP9Stats VersionBitsStatistics(const CBlockIndex* pindexPrev, const Consensus:: int VersionBitsStateSinceHeight(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos, VersionBitsCache& cache); uint32_t VersionBitsMask(const Consensus::Params& params, Consensus::DeploymentPos pos); -#endif +#endif // BITCOIN_VERSIONBITS_H diff --git a/src/wallet/coinselection.h b/src/wallet/coinselection.h index 4d1a43bc17..2b185879c6 100644 --- a/src/wallet/coinselection.h +++ b/src/wallet/coinselection.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_COINSELECTION_H -#define BITCOIN_COINSELECTION_H +#ifndef BITCOIN_WALLET_COINSELECTION_H +#define BITCOIN_WALLET_COINSELECTION_H #include <amount.h> #include <primitives/transaction.h> @@ -51,4 +51,4 @@ bool SelectCoinsBnB(std::vector<CInputCoin>& utxo_pool, const CAmount& target_va // Original coin selection algorithm as a fallback bool KnapsackSolver(const CAmount& nTargetValue, std::vector<CInputCoin>& vCoins, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet); -#endif // BITCOIN_COINSELECTION_H +#endif // BITCOIN_WALLET_COINSELECTION_H diff --git a/src/wallet/test/wallet_test_fixture.h b/src/wallet/test/wallet_test_fixture.h index 663836a955..23575391c4 100644 --- a/src/wallet/test/wallet_test_fixture.h +++ b/src/wallet/test/wallet_test_fixture.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_WALLET_TEST_FIXTURE_H -#define BITCOIN_WALLET_TEST_FIXTURE_H +#ifndef BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H +#define BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H #include <test/test_bitcoin.h> @@ -18,5 +18,4 @@ struct WalletTestingSetup: public TestingSetup { CWallet m_wallet; }; -#endif - +#endif // BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H diff --git a/src/wallet/walletutil.h b/src/wallet/walletutil.h index 50ff736402..f12acacd00 100644 --- a/src/wallet/walletutil.h +++ b/src/wallet/walletutil.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_WALLET_UTIL_H -#define BITCOIN_WALLET_UTIL_H +#ifndef BITCOIN_WALLET_WALLETUTIL_H +#define BITCOIN_WALLET_WALLETUTIL_H #include <chainparamsbase.h> #include <util.h> @@ -11,4 +11,4 @@ //! Get the path of the wallet directory. fs::path GetWalletDir(); -#endif // BITCOIN_WALLET_UTIL_H +#endif // BITCOIN_WALLET_WALLETUTIL_H |