[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 1/2] scripts/clean-includes: added duplicate #inc
From: |
Anand J |
Subject: |
[Qemu-devel] [PATCH v3 1/2] scripts/clean-includes: added duplicate #include check |
Date: |
Thu, 20 Oct 2016 21:18:01 +0530 |
Added script to check duplicate #include entries. This check will scan
and print the files in which duplicate #include entries are present.
Script might output false positive entries as well. Such entries should
not be removed. So if it finds any duplicate entries script will
terminate with an exit status 1. Then each and every file should be
checked manually and corrected if necessary.
In order to enable the check use --check-dup-head option with
scripts/clean-includes.
Reviewed-by: Thomas Huth <address@hidden>
Signed-off-by: Anand J <address@hidden>
---
scripts/clean-includes | 54 ++++++++++++++++++++++++++++++++++++++------------
1 file changed, 41 insertions(+), 13 deletions(-)
diff --git a/scripts/clean-includes b/scripts/clean-includes
index 4412a55..a0d5c18 100755
--- a/scripts/clean-includes
+++ b/scripts/clean-includes
@@ -14,15 +14,18 @@
# the top-level directory.
# Usage:
-# clean-includes [--git subjectprefix] file ...
+# clean-includes [--git subjectprefix] [--check-dup-head] file ...
# or
-# clean-includes [--git subjectprefix] --all
+# clean-includes [--git subjectprefix] [--check-dup-head] --all
#
# If the --git subjectprefix option is given, then after making
# the changes to the files this script will create a git commit
# with the subject line "subjectprefix: Clean up includes"
# and a boilerplate commit message.
#
+# If --check-dup-head is specified, additionally check for duplicate
+# header includes.
+#
# Using --all will cause clean-includes to run on the whole source
# tree (excluding certain directories which are known not to need
# handling).
@@ -45,23 +48,40 @@
GIT=no
+DUPHEAD=no
# Extended regular expression defining files to ignore when using --all
XDIRREGEX='^(tests/tcg|tests/multiboot|pc-bios|disas/libvixl)'
-if [ $# -ne 0 ] && [ "$1" = "--git" ]; then
- if [ $# -eq 1 ]; then
- echo "--git option requires an argument"
- exit 1
- fi
- GITSUBJ="$2"
- GIT=yes
- shift
- shift
-fi
+while true
+do
+ case $1 in
+ "--git")
+ if [ $# -eq 1 ]; then
+ echo "--git option requires an argument"
+ exit 1
+ fi
+ GITSUBJ="$2"
+ GIT=yes
+ shift
+ shift
+ ;;
+ "--check-dup-head")
+ DUPHEAD=yes
+ shift
+ ;;
+ "--")
+ shift
+ break
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
if [ $# -eq 0 ]; then
- echo "Usage: clean-includes [--git subjectprefix] [--all | foo.c ...]"
+ echo "Usage: clean-includes [--git subjectprefix] [--check-dup-head]
[--all | foo.c ...]"
echo "(modifies the files in place)"
exit 1
fi
@@ -154,6 +174,14 @@ for f in "$@"; do
done
+if [ "$DUPHEAD" = "yes" ]; then
+ grep "^#include" "$@" | sort | uniq -c | awk '{if ($1 > 1) print $0}'
+ if [ $? -eq 0 ]; then
+ echo "Found duplicate header file includes. Please check the above
files manually."
+ exit 1
+ fi
+fi
+
if [ "$GIT" = "yes" ]; then
git add -- "$@"
git commit --signoff -F - <<EOF
--
2.7.4