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:
MarcoFalke committed 2018-04-01 18:30:21 -04:00
commit 0c5f67b8e5
19 files changed
+94 -46

No files matched your search

+29
View 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}
+10
View File
@@ -606,6 +606,16 @@ namespace {
source file into account. This allows quoted includes to stand out more when source file into account. This allows quoted includes to stand out more when
the location of the source file actually is relevant. 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 GUI
----- -----
+5
View File
@@ -9,6 +9,9 @@
// //
// For more information, see BIP 173. // For more information, see BIP 173.
#ifndef BITCOIN_BECH32_H
#define BITCOIN_BECH32_H
#include <stdint.h> #include <stdint.h>
#include <string> #include <string>
#include <vector> #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); std::pair<std::string, std::vector<uint8_t>> Decode(const std::string& str);
} // namespace bech32 } // namespace bech32
#endif // BITCOIN_BECH32_H
+3 -3
View File
@@ -3,8 +3,8 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
/** Functions for measurement of CPU cycles */ /** Functions for measurement of CPU cycles */
#ifndef H_PERF #ifndef BITCOIN_BENCH_PERF_H
#define H_PERF #define BITCOIN_BENCH_PERF_H
#include <stdint.h> #include <stdint.h>
@@ -34,4 +34,4 @@ uint64_t perf_cpucycles(void);
void perf_init(void); void perf_init(void);
void perf_fini(void); void perf_fini(void);
#endif // H_PERF #endif // BITCOIN_BENCH_PERF_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_BLOCK_ENCODINGS_H #ifndef BITCOIN_BLOCKENCODINGS_H
#define BITCOIN_BLOCK_ENCODINGS_H #define BITCOIN_BLOCKENCODINGS_H
#include <primitives/block.h> #include <primitives/block.h>
@@ -206,4 +206,4 @@ public:
ReadStatus FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing); ReadStatus FillBlock(CBlock& block, const std::vector<CTransactionRef>& vtx_missing);
}; };
#endif #endif // BITCOIN_BLOCKENCODINGS_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_MERKLE #ifndef BITCOIN_CONSENSUS_MERKLE_H
#define BITCOIN_MERKLE #define BITCOIN_CONSENSUS_MERKLE_H
#include <stdint.h> #include <stdint.h>
#include <vector> #include <vector>
@@ -35,4 +35,4 @@ uint256 BlockWitnessMerkleRoot(const CBlock& block, bool* mutated = nullptr);
*/ */
std::vector<uint256> BlockMerkleBranch(const CBlock& block, uint32_t position); std::vector<uint256> BlockMerkleBranch(const CBlock& block, uint32_t position);
#endif #endif // BITCOIN_CONSENSUS_MERKLE_H
+3 -3
View File
@@ -3,8 +3,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_KEYIO_H #ifndef BITCOIN_KEY_IO_H
#define BITCOIN_KEYIO_H #define BITCOIN_KEY_IO_H
#include <chainparams.h> #include <chainparams.h>
#include <key.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);
bool IsValidDestinationString(const std::string& str, const CChainParams& params); bool IsValidDestinationString(const std::string& str, const CChainParams& params);
#endif // BITCOIN_KEYIO_H #endif // BITCOIN_KEY_IO_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Copyright (c) 2009-2017 The Bitcoin Core developers // Copyright (c) 2009-2017 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_POLICYESTIMATOR_H #ifndef BITCOIN_POLICY_FEES_H
#define BITCOIN_POLICYESTIMATOR_H #define BITCOIN_POLICY_FEES_H
#include <amount.h> #include <amount.h>
#include <policy/feerate.h> #include <policy/feerate.h>
@@ -294,4 +294,4 @@ private:
FastRandomContext insecure_rand; FastRandomContext insecure_rand;
}; };
#endif /*BITCOIN_POLICYESTIMATOR_H */ #endif // BITCOIN_POLICY_FEES_H
+5
View File
@@ -2,6 +2,9 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // 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 // Data for paymentservertests.cpp
// //
@@ -458,3 +461,5 @@ iEBFUrBDJZU+UEezGwr7/zoECjo5ZY3PmtZcM2sILNjyweJF6XVzGqTxUw6pN6sW\
XR2T3Gy2LzRvhVA25QgGqpz0/juS2BtmNbsZPkN9gMMwKimgzc+PuCzmEKwPK9cQ\ XR2T3Gy2LzRvhVA25QgGqpz0/juS2BtmNbsZPkN9gMMwKimgzc+PuCzmEKwPK9cQ\
YQ==\ YQ==\
"; ";
#endif // BITCOIN_QT_TEST_PAYMENTREQUESTDATA_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_QT_TEST_RPC_NESTED_TESTS_H #ifndef BITCOIN_QT_TEST_RPCNESTEDTESTS_H
#define BITCOIN_QT_TEST_RPC_NESTED_TESTS_H #define BITCOIN_QT_TEST_RPCNESTEDTESTS_H
#include <QObject> #include <QObject>
#include <QTest> #include <QTest>
@@ -19,4 +19,4 @@ class RPCNestedTests : public QObject
void rpcNestedTests(); void rpcNestedTests();
}; };
#endif // BITCOIN_QT_TEST_RPC_NESTED_TESTS_H #endif // BITCOIN_QT_TEST_RPCNESTEDTESTS_H
+3 -3
View File
@@ -3,8 +3,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_RPCCLIENT_H #ifndef BITCOIN_RPC_CLIENT_H
#define BITCOIN_RPCCLIENT_H #define BITCOIN_RPC_CLIENT_H
#include <univalue.h> #include <univalue.h>
@@ -19,4 +19,4 @@ UniValue RPCConvertNamedValues(const std::string& strMethod, const std::vector<s
*/ */
UniValue ParseNonRFCJSONValue(const std::string& strVal); UniValue ParseNonRFCJSONValue(const std::string& strVal);
#endif // BITCOIN_RPCCLIENT_H #endif // BITCOIN_RPC_CLIENT_H
+3 -3
View File
@@ -3,8 +3,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_RPCPROTOCOL_H #ifndef BITCOIN_RPC_PROTOCOL_H
#define BITCOIN_RPCPROTOCOL_H #define BITCOIN_RPC_PROTOCOL_H
#include <fs.h> #include <fs.h>
@@ -104,4 +104,4 @@ void DeleteAuthCookie();
/** Parse JSON-RPC batch reply into a vector */ /** Parse JSON-RPC batch reply into a vector */
std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue &in, size_t num); std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue &in, size_t num);
#endif // BITCOIN_RPCPROTOCOL_H #endif // BITCOIN_RPC_PROTOCOL_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_RPCREGISTER_H #ifndef BITCOIN_RPC_REGISTER_H
#define BITCOIN_RPCREGISTER_H #define BITCOIN_RPC_REGISTER_H
/** These are in one header file to avoid creating tons of single-function /** These are in one header file to avoid creating tons of single-function
* headers for everything under src/rpc/ */ * headers for everything under src/rpc/ */
@@ -29,4 +29,4 @@ static inline void RegisterAllCoreRPCCommands(CRPCTable &t)
RegisterRawTransactionRPCCommands(t); RegisterRawTransactionRPCCommands(t);
} }
#endif #endif // BITCOIN_RPC_REGISTER_H
+3 -3
View File
@@ -3,8 +3,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_RPCSERVER_H #ifndef BITCOIN_RPC_SERVER_H
#define BITCOIN_RPCSERVER_H #define BITCOIN_RPC_SERVER_H
#include <amount.h> #include <amount.h>
#include <rpc/protocol.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 // Retrieves any serialization flags requested in command line argument
int RPCSerializationFlags(); int RPCSerializationFlags();
#endif // BITCOIN_RPCSERVER_H #endif // BITCOIN_RPC_SERVER_H
+3 -3
View File
@@ -3,8 +3,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_BITCOINCONSENSUS_H #ifndef BITCOIN_SCRIPT_BITCOINCONSENSUS_H
#define BITCOIN_BITCOINCONSENSUS_H #define BITCOIN_SCRIPT_BITCOINCONSENSUS_H
#include <stdint.h> #include <stdint.h>
@@ -80,4 +80,4 @@ EXPORT_SYMBOL unsigned int bitcoinconsensus_version();
#undef EXPORT_SYMBOL #undef EXPORT_SYMBOL
#endif // BITCOIN_BITCOINCONSENSUS_H #endif // BITCOIN_SCRIPT_BITCOINCONSENSUS_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_CONSENSUS_VERSIONBITS #ifndef BITCOIN_VERSIONBITS_H
#define BITCOIN_CONSENSUS_VERSIONBITS #define BITCOIN_VERSIONBITS_H
#include <chain.h> #include <chain.h>
#include <map> #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); int VersionBitsStateSinceHeight(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos, VersionBitsCache& cache);
uint32_t VersionBitsMask(const Consensus::Params& params, Consensus::DeploymentPos pos); uint32_t VersionBitsMask(const Consensus::Params& params, Consensus::DeploymentPos pos);
#endif #endif // BITCOIN_VERSIONBITS_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_COINSELECTION_H #ifndef BITCOIN_WALLET_COINSELECTION_H
#define BITCOIN_COINSELECTION_H #define BITCOIN_WALLET_COINSELECTION_H
#include <amount.h> #include <amount.h>
#include <primitives/transaction.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 // Original coin selection algorithm as a fallback
bool KnapsackSolver(const CAmount& nTargetValue, std::vector<CInputCoin>& vCoins, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet); bool KnapsackSolver(const CAmount& nTargetValue, std::vector<CInputCoin>& vCoins, std::set<CInputCoin>& setCoinsRet, CAmount& nValueRet);
#endif // BITCOIN_COINSELECTION_H #endif // BITCOIN_WALLET_COINSELECTION_H
+3 -4
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_WALLET_TEST_FIXTURE_H #ifndef BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H
#define BITCOIN_WALLET_TEST_FIXTURE_H #define BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H
#include <test/test_bitcoin.h> #include <test/test_bitcoin.h>
@@ -18,5 +18,4 @@ struct WalletTestingSetup: public TestingSetup {
CWallet m_wallet; CWallet m_wallet;
}; };
#endif #endif // BITCOIN_WALLET_TEST_WALLET_TEST_FIXTURE_H
+3 -3
View File
@@ -2,8 +2,8 @@
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_WALLET_UTIL_H #ifndef BITCOIN_WALLET_WALLETUTIL_H
#define BITCOIN_WALLET_UTIL_H #define BITCOIN_WALLET_WALLETUTIL_H
#include <chainparamsbase.h> #include <chainparamsbase.h>
#include <util.h> #include <util.h>
@@ -11,4 +11,4 @@
//! Get the path of the wallet directory. //! Get the path of the wallet directory.
fs::path GetWalletDir(); fs::path GetWalletDir();
#endif // BITCOIN_WALLET_UTIL_H #endif // BITCOIN_WALLET_WALLETUTIL_H