Re: [PATCH RFC V2] checkpatch: flag split arithmetic operations with CHECK

From: Joe Perches
Date: Sun May 10 2015 - 12:52:12 EST


On Sun, 2015-05-10 at 13:26 +0200, Nicholas Mc Guire wrote:
> Simple arithmetic operations should be on one line, if they can be fit,
> rather than splitting at the operator. As this is not in the CodingStyle it
> is limited to --strict use of checkpatch.pl and emits a CHECK only.

The "if they can fit" is an important consideration
not addressed by this patch.

> This extension should flag such lines as CHECK only, as this is not
> mandated by the CodingStyle and in some cases they seem justified
> (e.g. kernel/sched/fair.c:760 and a few other examples in that file)

> TODO: Move to "# Check operator spacing" section as Joe Perches
> requested - simply got completely lost in that section...
> Also not clear if it really is the right place to put it -
> spacing issues and split operators are two quite different
> problems.
> Question: There are many (518) "lines over 80 char" warnings but that
> seems to be accepted in checkpatch.pl - should those be
> wrapped ?

perl is not c

Regexs are often quite long so I think trying to
do 80 column wrapping is something that would make
checkpatch even less readable.

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -2577,6 +2577,58 @@ sub process {
> "Logical continuations should be on the previous line\n" . $hereprev);
> }
>
> +# check for + or - at the end of a line but ignore --/++
> + if (!($rawline =~ /^\+.*(\+\+|--).*$/) &&
> + $rawline =~ /^\+.*(\+|-)$/) {
> + my $opline = $line; $opline =~ s/^./ /;
> + my ($curr_values, $types) = annotate_values($opline . "\n", $prev_values);
> + # its type and the end 'B' -> binary * -> fuss
> + if($types =~ m/^.*B$/) {
> + CHK("ARITHMETIC_CONTINUATIONS",
> + "Arithmetic expressions should be on one line\n" . $hereprev);

This message is unclear.

Arithmetic should not be on one line as that conflicts
with line length limits.

This test is similar to the logical operator continuation
test at line 2574.

Maybe the message would be clearer with
"Arithmetic operator should be on the previous line\n"

But more globally, maybe this style and message should
be used for many different operators:

o multiplicative (*, /, %)
o additive (+, -)
o bitwise shift (<<, >>)
o relational (<, >, <=, >=)
o equality (==, !=)
o bitwise (&, ^, |)
o logical (&&, ||)
o assignment (=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=)

That's a rather bigger change though and would
be better done with more discussion first.


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