lkml.org 
[lkml]   [2007]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/3] New script to check coding-style compliance on multiple regular files
    Date
    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
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-09-28 23:35    [W:4.475 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site