summaryrefslogtreecommitdiffstats
path: root/util/lint/lint-014-qualified-types
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2016-04-06 16:32:37 -0600
committerMartin Roth <martinroth@google.com>2016-04-21 23:13:09 +0200
commitf790672f2daf36dd361e184ef01ebdd5950a609c (patch)
tree526bc8d1d6a1baceedc5486140a2219750dd1b1d /util/lint/lint-014-qualified-types
parentc0124282910cfebe24e4efdbac184e5fee522589 (diff)
downloadcoreboot-f790672f2daf36dd361e184ef01ebdd5950a609c.tar.gz
coreboot-f790672f2daf36dd361e184ef01ebdd5950a609c.tar.bz2
coreboot-f790672f2daf36dd361e184ef01ebdd5950a609c.zip
util/lint: Find unsigned variables with no length specified
The coding guidelines say that all objects should have fully qualified types (unsigned int instead of unsigned). This script finds violations of that rule. Steps for the filter: 1) Find all lines in the coreboot tree that have the word 'unsigned' followed by a space. 2) Exclude directories that aren't in the include list or are specifically excluded. 3) Exclude files that aren't specifically included. 4) Filter out legimitate uses 'unsigned int' or 'unsigned long' for example. 5) Filter out lines that begin with '/*' or '*' Change-Id: I46213c6a168e6aafa29a50af814bf7e0fcd32eb6 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/14269 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'util/lint/lint-014-qualified-types')
-rwxr-xr-xutil/lint/lint-014-qualified-types35
1 files changed, 35 insertions, 0 deletions
diff --git a/util/lint/lint-014-qualified-types b/util/lint/lint-014-qualified-types
new file mode 100755
index 000000000000..58b48b705e17
--- /dev/null
+++ b/util/lint/lint-014-qualified-types
@@ -0,0 +1,35 @@
+#!/bin/sh
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2016 Google Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# DESCR: Check that variables have fully qualified types
+
+LC_ALL=C export LC_ALL
+
+INCLUDED_DIRS='^src/\|^util/\|payloads/libpayload\|payloads/coreinfo'
+EXCLUDED_DIRS='^src/vendorcode\|^util/romcc\|cbfstool/lzma\|cbfstool/lz4'
+INCLUDED_FILES='\.[ch]:'
+
+# Use git grep if the code is in a git repo, otherwise use grep.
+if [ -n "$(command -v git)" ] && [ -d .git ]; then
+ GREP_FILES="git grep -n"
+else
+ GREP_FILES="grep -rn"
+fi
+
+${GREP_FILES} 'unsigned[[:space:]]' | \
+ grep "$INCLUDED_DIRS" | \
+ grep -v "$EXCLUDED_DIRS" | \
+ grep "$INCLUDED_FILES" | \
+ grep -v 'unsigned[[:space:]]*int\|unsigned[[:space:]]*long\|unsigned[[:space:]]*char\|unsigned[[:space:]]*short' | \
+ grep -v ':[[:space:]]*/\*\|:[[:space:]]*\*'