lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1191015124866-git-send-email-ezk@cs.sunysb.edu>
Date:	Fri, 28 Sep 2007 17:32:02 -0400
From:	Erez Zadok <ezk@...sunysb.edu>
To:	torvalds@...ux-foundation.org, akpm@...ux-foundation.org
Cc:	linux-kernel@...r.kernel.org, Erez Zadok <ezk@...sunysb.edu>
Subject: [PATCH 3/3] New script to check coding-style compliance on multiple regular files

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@...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@...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

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ