login
Header Space

 
 

[PATCH 3/3] New script to check coding-style compliance on multiple regular files

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <torvalds@...>, <akpm@...>
Cc: <linux-kernel@...>, Erez Zadok <ezk@...>
Date: Friday, September 28, 2007 - 5:32 pm

The script calls checkpatch.pl on each file, and formats any error messages
to comply with standard compiler error messages:

	file_name:line_number:error_message

This is particularly useful when run from within a text editor which can
parse these error messages and show the user a buffer with the file in
question, placing the cursor on the offending line (e.g., Emacs's "M-x
next-error" command, bound by default to C-x `).

Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
---
 scripts/check-coding-standards.pl |   59 +++++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)
 create mode 100755 scripts/check-coding-standards.pl

diff --git a/scripts/check-coding-standards.pl b/scripts/check-coding-standards.pl
new file mode 100755
index 0000000..a1ba597
--- /dev/null
+++ b/scripts/check-coding-standards.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl -w
+# (c) 2007, Erez Zadok <ezk@cs.sunysb.edu>
+# Licensed under the terms of the GNU GPL License version 2
+#
+# Check one more more files for compliance with coding standards.
+# Outputs standard compiler-error format, one error per line, as follows
+#	filename:lineno:errormsg
+# This standard error message can be parsed by various tools, including
+# Emacs's M-x next-error
+#
+# Usage: check-coding-standards.pl file [files...]
+
+
+if (!defined($ARGV[0])) {
+    printf("Usage: $0 file [files...]\n");
+    exit(1);
+}
+
+$msg="";
+$lineno=0;
+foreach $file (@ARGV) {
+    die "$file: $!" unless (-f $file);
+    open(FILE, "diff -u /dev/null $file | perl scripts/checkpatch.pl --no-signoff - |") || die "$file: $!";
+    while (($line = <FILE>)) {
+	chop $line;
+	next if ($line =~ /^$/);
+	if ($line =~ /^ERROR: /) {
+	    $msg = $line;
+	    next;
+	}
+	if ($line =~ /^WARNING: /) {
+	    $msg = $line;
+	    next;
+	}
+	if ($line =~ /^CHECK: /) {
+	    $msg = $line;
+	    next;
+	}
+	if ($line =~ /^#/) {
+	    $lineno = (split(/:/, $line))[3];
+	    next;
+	}
+	if ($line =~ /^\+/) {
+	    if ($lineno > 0) {
+		printf(STDOUT "%s:%d:%s\n", $file, $lineno, $msg);
+		$msg="";
+		$lineno=0;
+	    }
+	    next;
+	}
+	next if ($line =~ /^\s+\^/);
+	next if ($line =~ /^Your patch has style problems, please review/);
+	next if ($line =~ /^are false positives report them to the/);
+	next if ($line =~ /^CHECKPATCH in MAINTAINERS/);
+	next if ($line =~ /^Your patch has no obvious style problems/);
+	die "unknown output from checkpatch: $line: $.";
+    }
+    close(FILE);
+}
-- 
1.5.2.2

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH] 0/3 coding standards documentation/code updates, Linus Torvalds, (Sat Sep 29, 11:00 pm)
Re: [PATCH] 0/3 coding standards documentation/code updates, Linus Torvalds, (Sat Sep 29, 11:35 pm)
Re: [PATCH] 0/3 coding standards documentation/code updates, Robert P. J. Day, (Sat Sep 29, 5:56 pm)
Re: [PATCH] 0/3 coding standards documentation/code updates, J. Bruce Fields, (Sat Sep 29, 3:56 pm)
[PATCH 1/3] CodingStyle updates, Erez Zadok, (Fri Sep 28, 5:32 pm)
Re: [PATCH 1/3] CodingStyle updates, Randy Dunlap, (Sat Sep 29, 2:01 pm)
Re: [PATCH 1/3] CodingStyle updates, Sam Ravnborg, (Sat Sep 29, 2:29 pm)
Re: [PATCH 1/3] CodingStyle updates, Scott Preece, (Sat Sep 29, 11:59 am)
Re: [PATCH 1/3] CodingStyle updates, Shawn Bohrer, (Sat Sep 29, 10:43 am)
Re: [PATCH 1/3] CodingStyle updates, Randy Dunlap, (Fri Sep 28, 5:46 pm)
[PATCH 3/3] New script to check coding-style compliance on m..., Erez Zadok, (Fri Sep 28, 5:32 pm)
[PATCH 2/3] Update usage string for checkpatch.pl, Erez Zadok, (Fri Sep 28, 5:32 pm)
speck-geostationary