checkpatch: extend CamelCase types and ignore existing CamelCase uses in a patch
authorJoe Perches <joe@perches.com>
Tue, 12 Nov 2013 23:10:06 +0000 (15:10 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 13 Nov 2013 03:09:24 +0000 (12:09 +0900)
Extend the CamelCase words found to include structure members.

In https://lkml.org/lkml/2013/9/3/318 Sarah Sharp (mostly) wrote:

"In general, if checkpatch.pl complains about a variable a patch
introduces that's CamelCase, you should pay attention to it.  Otherwise,
[] ignore it."

So, if checking a patch, scan the original patched file if it's available
and add any preexisting CamelCase types so reuses do not generate
CamelCase messages.

That also means Andrew's not so cruelly spurned anymore.
https://lkml.org/lkml/2013/2/22/426

Signed-off-by: Joe Perches <joe@perches.com>
Suggested-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Suggested-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/checkpatch.pl

index 42103a0cdbc06b446decb8a2db56c6829b3fa27d..c03e4278b07c2af8dc51df8d95b69b4ac425a76f 100755 (executable)
@@ -443,7 +443,7 @@ sub seed_camelcase_file {
                if ($line =~ /^[ \t]*(?:#[ \t]*define|typedef\s+$Type)\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)/) {
                        $camelcase{$1} = 1;
                }
-               elsif ($line =~ /^\s*$Declare\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)\s*\(/) {
+               elsif ($line =~ /^\s*$Declare\s+(\w*(?:[A-Z][a-z]|[a-z][A-Z])\w*)\s*[\(\[,;]/) {
                        $camelcase{$1} = 1;
                }
        }
@@ -1612,6 +1612,8 @@ sub process {
        my @setup_docs = ();
        my $setup_docs = 0;
 
+       my $camelcase_file_seeded = 0;
+
        sanitise_line_reset();
        my $line;
        foreach my $rawline (@rawlines) {
@@ -3394,7 +3396,13 @@ sub process {
                                while ($var =~ m{($Ident)}g) {
                                        my $word = $1;
                                        next if ($word !~ /[A-Z][a-z]|[a-z][A-Z]/);
-                                       seed_camelcase_includes() if ($check);
+                                       if ($check) {
+                                               seed_camelcase_includes();
+                                               if (!$file && !$camelcase_file_seeded) {
+                                                       seed_camelcase_file($realfile);
+                                                       $camelcase_file_seeded = 1;
+                                               }
+                                       }
                                        if (!defined $camelcase{$word}) {
                                                $camelcase{$word} = 1;
                                                CHK("CAMELCASE",