add include-what-you-use helper. Signed-off-by: Garrit Franke <garrit@slashdev.space> --- contrib/iwyu/README | 33 +++++++++++++++++++++++++++++++++ contrib/iwyu/iwyu.sh | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 contrib/iwyu/README create mode 100755 contrib/iwyu/iwyu.sh diff --git a/contrib/iwyu/README b/contrib/iwyu/README new file mode 100644 index 0000000000..5e2d218602 --- /dev/null +++ b/contrib/iwyu/README @@ -0,0 +1,33 @@ +Include What You Use +==================== + +Include what you use (iwyu) [1] is a tool that points out which headers a file +should include. Moreover, it can point out includes that are not used by a file, +which makes it especially handy for cleanup tasks. + +To run this script, you will need iwyu to be installed on your system. + +The "iwyu.sh" script runs iwyu on a given object and omits mandatory headers +defined in "Documentation/CodingGuidelines". + +Example usage: + + ./contrib/iwyu/iwyu.sh diff.o + +This yields: + + diff.c should remove these lines: + - #include "attr.h" // lines 13-13 + - #include "submodule-config.h" // lines 18-18 + +In its current form, this script should not be used to auto-generate patches, +since there are still some false-positives that only a human can resolve. It is +meant as a starting point for further cleanups. It could be nice to integrate +this as a step in our CI, but we're not quite there yet. + +The inspiration for this script came from this [2] email-thread. + +Garrit Franke <garrit@slashdev.space> + +[1]: https://github.com/include-what-you-use/include-what-you-use +[2]: https://lore.kernel.org/all/220401.8635ixp3f4.gmgdl@xxxxxxxxxxxxxxxxxxx/#t \ No newline at end of file diff --git a/contrib/iwyu/iwyu.sh b/contrib/iwyu/iwyu.sh new file mode 100755 index 0000000000..3ef8639eae --- /dev/null +++ b/contrib/iwyu/iwyu.sh @@ -0,0 +1,2 @@ +make $1 CC=include-what-you-use CFLAGS="-Xiwyu --verbose=1" 2>&1 \ +| grep -v -E -e '^#include <' -e '^#include "(cache|git-compat-util|gettext)\.h"' \ No newline at end of file -- 2.35.1