linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] update checkpatch to version 0.27
@ 2009-01-12 12:44 Andy Whitcroft
  2009-01-12 12:44 ` [PATCH 1/6] checkpatch: handle missing #if open in context Andy Whitcroft
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:44 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

This update brings an urgent fix for #if handling, and a couple of new checks.
Of note:

 - fixes spurious warning on mismatched #if/#else within the context
 - fixes to type/cast warnings on bad spacing
 - seq_operations should be const

The first patch in this series is the fix for the spurious warnings which
were affecting Ingo and probabally should be expedited to mainline.

Complete changelog below.

-apw

Andy Whitcroft (6):
  checkpatch: handle missing #if open in context
  checkpatch: type/cast spacing should not check prefix spacing
  checkpatch: allow parentheses on return handle array values
  checkpatch: if should not continue a preceeding brace
  checkpatch: struct seq_operations should normally be const
  checkpatch: version: 0.27

 scripts/checkpatch.pl |   28 ++++++++++++++++++++--------
 1 files changed, 20 insertions(+), 8 deletions(-)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/6] checkpatch: handle missing #if open in context
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
@ 2009-01-12 12:44 ` Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 2/6] checkpatch: type/cast spacing should not check prefix spacing Andy Whitcroft
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:44 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

If the #if opening statement is not in the context then the context
stack can be empty.  Handle this by ensuring there is always a blank
entry in the stack.

Signed-off-by: Andy Whitcroft <apw@canonical.com>
Tested-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
---
 scripts/checkpatch.pl |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7bed4ed..eefef65 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -411,13 +411,15 @@ sub ctx_statement_block {
 
 	my $type = '';
 	my $level = 0;
-	my @stack = ([$type, $level]);
+	my @stack = ();
 	my $p;
 	my $c;
 	my $len = 0;
 
 	my $remainder;
 	while (1) {
+		@stack = (['', 0]) if ($#stack == -1);
+
 		#warn "CSB: blk<$blk> remain<$remain>\n";
 		# If we are about to drop off the end, pull in more
 		# context.
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] checkpatch: type/cast spacing should not check prefix spacing
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
  2009-01-12 12:44 ` [PATCH 1/6] checkpatch: handle missing #if open in context Andy Whitcroft
@ 2009-01-12 12:45 ` Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 3/6] checkpatch: allow parentheses on return handle array values Andy Whitcroft
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

We should not be complaining about the prefix spacing for types and
casts.  We are triggering here because the check for spacing between
'*'s is overly loose.  Tighten this up.

Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 scripts/checkpatch.pl |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index eefef65..1d7924a 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1665,7 +1665,7 @@ sub process {
 			# Should not end with a space.
 			$to =~ s/\s+$//;
 			# '*'s should not have spaces between.
-			while ($to =~ s/(.)\s\*/$1\*/) {
+			while ($to =~ s/\*\s+\*/\*\*/) {
 			}
 
 			#print "from<$from> to<$to>\n";
@@ -1680,7 +1680,7 @@ sub process {
 			# Should not end with a space.
 			$to =~ s/\s+$//;
 			# '*'s should not have spaces between.
-			while ($to =~ s/(.)\s\*/$1\*/) {
+			while ($to =~ s/\*\s+\*/\*\*/) {
 			}
 			# Modifiers should have spaces.
 			$to =~ s/(\b$Modifier$)/$1 /;
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] checkpatch: allow parentheses on return handle array values
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
  2009-01-12 12:44 ` [PATCH 1/6] checkpatch: handle missing #if open in context Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 2/6] checkpatch: type/cast spacing should not check prefix spacing Andy Whitcroft
@ 2009-01-12 12:45 ` Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 4/6] checkpatch: if should not continue a preceeding brace Andy Whitcroft
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

When we allow return to have surrounding parentheses when containing
comparison operators we are not correctly handling the case where
the values contain array sufffixes.  Squash them.

Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 scripts/checkpatch.pl |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 1d7924a..696196e 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2016,7 +2016,11 @@ sub process {
 
 			# Flatten any parentheses
 			$value =~ s/\)\(/\) \(/g;
-			while ($value !~ /(?:$Ident|-?$Constant)\s*$Compare\s*(?:$Ident|-?$Constant)/ && $value =~ s/\([^\(\)]*\)/1/) {
+			while ($value =~ s/\[[^\{\}]*\]/1/ ||
+			       $value !~ /(?:$Ident|-?$Constant)\s*
+					     $Compare\s*
+					     (?:$Ident|-?$Constant)/x &&
+			       $value =~ s/\([^\(\)]*\)/1/) {
 			}
 
 			if ($value =~ /^(?:$Ident|-?$Constant)$/) {
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] checkpatch: if should not continue a preceeding brace
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
                   ` (2 preceding siblings ...)
  2009-01-12 12:45 ` [PATCH 3/6] checkpatch: allow parentheses on return handle array values Andy Whitcroft
@ 2009-01-12 12:45 ` Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 5/6] checkpatch: struct seq_operations should normally be const Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 6/6] checkpatch: version: 0.27 Andy Whitcroft
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

We should not be continuing a braced section with an if, for example:

	if (...) {
	} if (...) {
	}

Detect this and suggest adding a newline.

Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 scripts/checkpatch.pl |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 696196e..5ea55e3 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2108,6 +2108,11 @@ sub process {
 				ERROR("trailing statements should be on next line\n" . $herecurr);
 			}
 		}
+# if should not continue a brace
+		if ($line =~ /}\s*if\b/) {
+			ERROR("trailing statements should be on next line\n" .
+				$herecurr);
+		}
 # case and default should not have general statements after them
 		if ($line =~ /^.\s*(?:case\s*.*|default\s*):/g &&
 		    $line !~ /\G(?:
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] checkpatch: struct seq_operations should normally be const
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
                   ` (3 preceding siblings ...)
  2009-01-12 12:45 ` [PATCH 4/6] checkpatch: if should not continue a preceeding brace Andy Whitcroft
@ 2009-01-12 12:45 ` Andy Whitcroft
  2009-01-12 12:45 ` [PATCH 6/6] checkpatch: version: 0.27 Andy Whitcroft
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

In the general use case struct seq_operations should be a const object.
Check for and warn where it is not.

Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 scripts/checkpatch.pl |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 5ea55e3..447435c 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2527,9 +2527,10 @@ sub process {
 			WARN("please use device_initcall() instead of __initcall()\n" . $herecurr);
 		}
 # check for struct file_operations, ensure they are const.
-		if ($line =~ /\bstruct\s+file_operations\b/ &&
-		    $line !~ /\bconst\b/) {
-			WARN("struct file_operations should normally be const\n" . $herecurr);
+		if ($line !~ /\bconst\b/ &&
+		    $line =~ /\bstruct\s+(file_operations|seq_operations)\b/) {
+			WARN("struct $1 should normally be const\n" .
+				$herecurr);
 		}
 
 # use of NR_CPUS is usually wrong
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] checkpatch: version: 0.27
  2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
                   ` (4 preceding siblings ...)
  2009-01-12 12:45 ` [PATCH 5/6] checkpatch: struct seq_operations should normally be const Andy Whitcroft
@ 2009-01-12 12:45 ` Andy Whitcroft
  5 siblings, 0 replies; 7+ messages in thread
From: Andy Whitcroft @ 2009-01-12 12:45 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ingo Molnar, linux-kernel, Andy Whitcroft

Signed-off-by: Andy Whitcroft <apw@canonical.com>
---
 scripts/checkpatch.pl |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 447435c..45eb0ae 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -10,7 +10,7 @@ use strict;
 my $P = $0;
 $P =~ s@.*/@@g;
 
-my $V = '0.26';
+my $V = '0.27';
 
 use Getopt::Long qw(:config no_auto_abbrev);
 
-- 
1.6.0.4.911.gc990


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-01-12 12:47 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-01-12 12:44 [PATCH 0/6] update checkpatch to version 0.27 Andy Whitcroft
2009-01-12 12:44 ` [PATCH 1/6] checkpatch: handle missing #if open in context Andy Whitcroft
2009-01-12 12:45 ` [PATCH 2/6] checkpatch: type/cast spacing should not check prefix spacing Andy Whitcroft
2009-01-12 12:45 ` [PATCH 3/6] checkpatch: allow parentheses on return handle array values Andy Whitcroft
2009-01-12 12:45 ` [PATCH 4/6] checkpatch: if should not continue a preceeding brace Andy Whitcroft
2009-01-12 12:45 ` [PATCH 5/6] checkpatch: struct seq_operations should normally be const Andy Whitcroft
2009-01-12 12:45 ` [PATCH 6/6] checkpatch: version: 0.27 Andy Whitcroft

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).