From a0d359bbfa3227b8bf3536c5df87161ae8991831 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Fri, 6 Nov 2020 12:28:26 +0100 Subject: [PATCH] Add unused headers check to CI --- .gitlab-ci.yml | 1 + util/copyrights | 1 + util/unused-headers.sh | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100755 util/unused-headers.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3e939721b8..6c5dee8ac2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -466,6 +466,7 @@ misc: - sh util/check-win32util-configure - sh util/check-categories.sh - if git grep SYSTEMTESTTOP -- ':!.gitlab-ci.yml'; then echo 'Please use relative paths instead of $SYSTEMTESTTOP.'; exit 1; fi + - bash util/unused-headers.sh needs: [] artifacts: paths: diff --git a/util/copyrights b/util/copyrights index 1b29c20edf..161226d4de 100644 --- a/util/copyrights +++ b/util/copyrights @@ -2193,6 +2193,7 @@ ./util/run-clang-tidy X 2020 ./util/spacewhack.pl PERL 2000,2001,2004,2007,2012,2016,2018,2019,2020 ./util/tabify-changes SH 2004,2007,2012,2016,2018,2019,2020 +./util/unused-headers.sh SH 2020 ./util/update-drafts.pl PERL 2000,2001,2004,2007,2012,2016,2018,2019,2020 ./util/update_branches PERL 2005,2007,2012,2016,2018,2019,2020 ./util/update_copyrights PERL 1998,1999,2000,2001,2004,2005,2006,2007,2008,2009,2010,2012,2013,2014,2015,2016,2017,2018,2019,2020 diff --git a/util/unused-headers.sh b/util/unused-headers.sh new file mode 100755 index 0000000000..35af0f69f8 --- /dev/null +++ b/util/unused-headers.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Copyright (C) Internet Systems Consortium, Inc. ("ISC") +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at https://mozilla.org/MPL/2.0/. +# +# See the COPYRIGHT file distributed with this work for additional +# information regarding copyright ownership. + +unused_headers=$( + git ls-files -- '*.h' ':!:*include*' ':!:*rdata*' ':!:*win32*' | + sed 's|.*/\(.*\.h\)|\1|' | + while read -r header; do + git grep -q "#include \".*${header}\"" || echo "${header}" + done + + git ls-files -- '*include/*.h' | + sed 's|.*/include\/\(.*\.h\)|\1|' | + while read -r header; do + git grep -q "#include <${header}>" || echo "${header}" + done +) + +if [ -n "${unused_headers}" ]; then + echo -e "Following headers are unused:\n${unused_headers}" + exit 1 +fi