From 6f3835891a217af960c73366f6b635f65b256901 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 23 Feb 2018 10:11:19 -0500 Subject: [PATCH 1/2] tools: ignore FSF warning, fn macros in checkpatch * Unlike Linux we do require the GPL file header * When checking for spaces between function names and parentheses, ignore all-uppercase function names as these are likely to be macros, and function-like macros may have that space Signed-off-by: Quentin Young --- tools/checkpatch.pl | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/tools/checkpatch.pl b/tools/checkpatch.pl index 8477383469c9..fe771ebbba6e 100755 --- a/tools/checkpatch.pl +++ b/tools/checkpatch.pl @@ -2766,18 +2766,6 @@ sub process { $rpt_cleaners = 1; } -# Check for FSF mailing addresses. - if ($rawline =~ /\bwrite to the Free/i || - $rawline =~ /\b675\s+Mass\s+Ave/i || - $rawline =~ /\b59\s+Temple\s+Pl/i || - $rawline =~ /\b51\s+Franklin\s+St/i) { - my $herevet = "$here\n" . cat_vet($rawline) . "\n"; - my $msg_level = \&ERROR; - $msg_level = \&CHK if ($file); - &{$msg_level}("FSF_MAILING_ADDRESS", - "Do not include the paragraph about writing to the Free Software Foundation's mailing address from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. Linux already includes a copy of the GPL.\n" . $herevet) - } - # check for Kconfig help text having a real description # Only applies when adding the entry originally, after that we do not have # sufficient context to determine whether it is indeed long enough. @@ -4058,6 +4046,10 @@ sub process { # likely a typedef for a function. } elsif ($ctx =~ /$Type$/) { + # All-uppercase function names are usually macros, + # ignore those + } elsif ($name eq uc $name) { + } else { if (WARN("SPACING", "space prohibited between function name and open parenthesis '('\n" . $herecurr) && From 2580e72f8d62d9094ddea2af72de222edcac4ccc Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 23 Feb 2018 10:58:17 -0500 Subject: [PATCH 2/2] tools: finer-grained error codes for checkpatch * 2 for errors * 1 for warnings * 0 for clean * Suppress all report text for a clean result * Remove check for const structs from perl script * Remove grep suppression for that check from shell script Signed-off-by: Quentin Young --- tools/checkpatch.pl | 13 ------------- tools/checkpatch.sh | 15 ++++++++++----- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/tools/checkpatch.pl b/tools/checkpatch.pl index fe771ebbba6e..a952de89474d 100755 --- a/tools/checkpatch.pl +++ b/tools/checkpatch.pl @@ -55,7 +55,6 @@ my $spelling_file = "$D/spelling.txt"; my $codespell = 0; my $codespellfile = "/usr/share/codespell/dictionary.txt"; -my $conststructsfile = "$D/const_structs.checkpatch"; my $typedefsfile = ""; my $color = "auto"; my $allow_c99_comments = 1; @@ -685,10 +684,6 @@ sub read_words { return 0; } -my $const_structs = ""; -read_words(\$const_structs, $conststructsfile) - or warn "No structs that should be const will be found - file '$conststructsfile': $!\n"; - my $typeOtherTypedefs = ""; if (length($typedefsfile)) { read_words(\$typeOtherTypedefs, $typedefsfile) @@ -6197,14 +6192,6 @@ sub process { "please use device_initcall() or more appropriate function instead of __initcall() (see include/linux/init.h)\n" . $herecurr); } -# check for various structs that are normally const (ops, kgdb, device_tree) -# and avoid what seem like struct definitions 'struct foo {' - if ($line !~ /\bconst\b/ && - $line =~ /\bstruct\s+($const_structs)\b(?!\s*\{)/) { - WARN("CONST_STRUCT", - "struct $1 should normally be const\n" . $herecurr); - } - # use of NR_CPUS is usually wrong # ignore definitions of NR_CPUS and usage to define arrays as likely right if ($line =~ /\bNR_CPUS\b/ && diff --git a/tools/checkpatch.sh b/tools/checkpatch.sh index f55692096fc4..930c8e2df6bd 100755 --- a/tools/checkpatch.sh +++ b/tools/checkpatch.sh @@ -69,15 +69,20 @@ else done echo "Done." for file in /tmp/f1/*_cp; do - echo "Report for $(basename $file _cp)" 1>&2 - echo "===============================================" 1>&2 if [ -a /tmp/f2/$(basename $file) ]; then - diff $file /tmp/f2/$(basename $file) | grep -v "normally be const" | grep -A3 "ERROR\|WARNING" 1>&2 + result=$(diff $file /tmp/f2/$(basename $file) | grep -A3 "ERROR\|WARNING") else - cat $file | grep -v "normally be const" | grep -A3 "ERROR\|WARNING" 1>&2 + result=$(cat $file | grep -A4 "ERROR\|WARNING") fi if [ "$?" -eq "0" ]; then - stat=1 + echo "Report for $(basename $file _cp)" 1>&2 + echo "===============================================" 1>&2 + echo "$result" 1>&2 + if echo $result | grep -q "ERROR"; then + stat=2 + elif [ "$stat" -eq "0" ]; then + stat=1 + fi fi done fi