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 <[EMAIL PROTECTED]>
---
 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 <[EMAIL PROTECTED]>
+# 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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to