Re: [PATCH] checkpatch: Avoid suggesting struct definitions should be const

From: Arthur Brainville (Ybalrid)
Date: Mon Apr 10 2017 - 14:56:50 EST


On Mon, Apr 10, 2017 at 10:45:55AM -0700, Joe Perches wrote:
> Many structs are generally used const and there is a known list
> of these structs.
>
> struct definitions should not be generally be declared const.
>
> Add a test for the lack of an open brace immediately after the
> struct to avoid definitions.
>
> This avoids the false positive "struct foo should normally be const"
> message only when the open brace is on the same line as the definition.
>
> Signed-off-by: Joe Perches <joe@xxxxxxxxxxx>
> ---
> scripts/checkpatch.pl | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 089c974aa3a5..3a1cb9d7474e 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -6090,11 +6090,11 @@ sub process {
> }
>
> # check for various structs that are normally const (ops, kgdb, device_tree)
> +# and avoid what seem like struct definitions 'struct foo {'
> if ($line !~ /\bconst\b/ &&
> - $line =~ /\bstruct\s+($const_structs)\b/) {
> + $line =~ /\bstruct\s+($const_structs)\b(?!\s*\{)/) {
> WARN("CONST_STRUCT",
> - "struct $1 should normally be const\n" .
> - $herecurr);
> + "struct $1 should normally be const\n" . $herecurr);
> }
>
> # use of NR_CPUS is usually wrong
> --
> 2.10.0.rc2.1.g053435c
>

Oh, right... Everything makes sence now!

That output from checkpatch was confusing. Well, at least for that
little newbie that got the weird idea to send a "fix" on some comedi
driver code (me).

(I have to say, that was an interesting experience, and if me sending
that patch made Joe Perches improve checkpatch a tiny little bit, it
wasn't *that* useless... I just hope I did not annoy people too much)


Obviusly, the patch I sent about that staging comedi driver should be
ignored. I'll be a bit more careful when looking at these thing, and
recheck with the coding-style part of the doc.

Regards,
Arthur Brainville