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
This commit is contained in:
commit
0c5f67b8e5
19 changed files with 94 additions and 46 deletions
29
contrib/devtools/lint-include-guards.sh
Executable file
29
contrib/devtools/lint-include-guards.sh
Executable file
|
@ -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}
|
|
@ -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
|
||||
-----
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue