Merge #12933: doc: Refine header include policy
fad0fc3c9a
Refine travis check for duplicate includes (MarcoFalke)
Pull request description:
Since there is no harm in having "duplicate" includes and it makes it obvious what are the dependencies of each file, without having to do static analysis or jumping between files, I'd suggest to revert the travis check for duplicate includes.
Generally, I think that enforcing minor style preferences should not be done via travis. The cost of maintaining and the burden on other developers is too high. C.f discussion in https://github.com/bitcoin/bitcoin/pull/10973#discussion_r180142594
Tree-SHA512: 97ab0e769d457ccfb873fff6c99613f8b944cd7ef95bfdccb0e1bbe8f5df1f16548c658fa03af42516f806546e75646d338a061e7b057619490235d311ca21f1
This commit is contained in:
commit
3cf76c23fb
2 changed files with 1 additions and 13 deletions
|
@ -19,17 +19,6 @@ for HEADER_FILE in $(filter_suffix h); do
|
||||||
echo
|
echo
|
||||||
EXIT_CODE=1
|
EXIT_CODE=1
|
||||||
fi
|
fi
|
||||||
CPP_FILE=${HEADER_FILE/%\.h/.cpp}
|
|
||||||
if [[ ! -e $CPP_FILE ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
DUPLICATE_INCLUDES_IN_HEADER_AND_CPP_FILES=$(grep -hE "^#include " <(sort -u < "${HEADER_FILE}") <(sort -u < "${CPP_FILE}") | grep -E "^#include " | sort | uniq -d)
|
|
||||||
if [[ ${DUPLICATE_INCLUDES_IN_HEADER_AND_CPP_FILES} != "" ]]; then
|
|
||||||
echo "Include(s) from ${HEADER_FILE} duplicated in ${CPP_FILE}:"
|
|
||||||
echo "${DUPLICATE_INCLUDES_IN_HEADER_AND_CPP_FILES}"
|
|
||||||
echo
|
|
||||||
EXIT_CODE=1
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
for CPP_FILE in $(filter_suffix cpp); do
|
for CPP_FILE in $(filter_suffix cpp); do
|
||||||
DUPLICATE_INCLUDES_IN_CPP_FILE=$(grep -E "^#include " < "${CPP_FILE}" | sort | uniq -d)
|
DUPLICATE_INCLUDES_IN_CPP_FILE=$(grep -E "^#include " < "${CPP_FILE}" | sort | uniq -d)
|
||||||
|
|
|
@ -569,8 +569,7 @@ Source code organization
|
||||||
- *Rationale*: Shorter and simpler header files are easier to read, and reduce compile time
|
- *Rationale*: Shorter and simpler header files are easier to read, and reduce compile time
|
||||||
|
|
||||||
- Every `.cpp` and `.h` file should `#include` every header file it directly uses classes, functions or other
|
- Every `.cpp` and `.h` file should `#include` every header file it directly uses classes, functions or other
|
||||||
definitions from, even if those headers are already included indirectly through other headers. One exception
|
definitions from, even if those headers are already included indirectly through other headers.
|
||||||
is that a `.cpp` file does not need to re-include the includes already included in its corresponding `.h` file.
|
|
||||||
|
|
||||||
- *Rationale*: Excluding headers because they are already indirectly included results in compilation
|
- *Rationale*: Excluding headers because they are already indirectly included results in compilation
|
||||||
failures when those indirect dependencies change. Furthermore, it obscures what the real code
|
failures when those indirect dependencies change. Furthermore, it obscures what the real code
|
||||||
|
|
Loading…
Reference in a new issue