lkml.org 
[lkml]   [2012]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRE: [PATCH] checkpatch: Add some --strict coding style checks
    From
    Date
    On Tue, 2012-02-21 at 22:09 +0000, Allan, Bruce W wrote:
    > This appears to falsely complain about parenthesis alignment in
    > conditional statements with multiple opening parentheses.

    Hey Allan.

    Can you try this one please?
    ---
    scripts/checkpatch.pl | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
    1 files changed, 58 insertions(+), 0 deletions(-)

    diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
    index a3b9782..e95419e 100755
    --- a/scripts/checkpatch.pl
    +++ b/scripts/checkpatch.pl
    @@ -1330,6 +1330,35 @@ sub check_absolute_file {
    }
    }

    +sub pos_last_openparen {
    +
    + my ($args) = @_;
    +
    + my $pos = 0;
    + my $len = length($args);
    +
    + my $opens = $args =~ tr/\(/\(/;
    + my $closes = $args =~ tr/\)/\)/;
    +
    + my $last_openparen = 0;
    +
    + if (($opens == 0) || ($closes >= $opens)) {
    + return 0;
    + }
    +
    + for ($pos = 0; $pos < $len; $pos++) {
    + if (substr($args, $pos) =~ /^($FuncArg)/) {
    + $pos += length($1);
    + }
    +
    + if (substr($args, $pos, 1) eq '(') {
    + $last_openparen = $pos;
    + }
    + }
    +
    + return $last_openparen + 1;
    +}
    +
    sub process {
    my $filename = shift;

    @@ -1783,6 +1812,35 @@ sub process {
    "please, no space before tabs\n" . $herevet);
    }

    +# check for && or || at the start of a line
    + if ($rawline =~ /^\+\s*(&&|\|\|)/) {
    + CHK("LOGICAL_CONTINUATIONS",
    + "Logical continuations should be on the previous line\n" . $hereprev);
    + }
    +
    +# check multi-line statement indentation matches previous line
    + if ($prevline =~ /^\+(\t*)(if \(|$Ident\().*(\&\&|\|\||,)\s*$/ && $rawline =~ /^\+([ \t]*)/) {
    + $prevline =~ /^\+(\t*)(if \(|$Ident\()(.*)(\&\&|\|\||,)\s*$/;
    + my $oldindent = $1;
    + my $if_or_func = $2;
    + my $args = $3;
    +
    + my $pos = pos_last_openparen($args);
    +
    + my $len = length($if_or_func) + $pos;
    + $rawline =~ /^\+([ \t]*)/;
    + my $newindent = $1;
    +
    + my $goodindent = $oldindent .
    + "\t" x ($len / 8) .
    + " " x ($len % 8);
    +
    + if ($newindent ne $goodindent) {
    + CHK("PARENTHESIS_ALIGNMENT",
    + "Alignment should match open parenthesis\n" . $hereprev);
    + }
    + }
    +
    # check for spaces at the beginning of a line.
    # Exceptions:
    # 1) within comments



    \
     
     \ /
      Last update: 2012-02-22 02:39    [W:0.021 / U:63.384 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site