Re: checkpatch suspected false positive
From: Tobin C. Harding
Date: Tue Feb 21 2017 - 18:52:38 EST
On Tue, Feb 21, 2017 at 03:19:22PM -0800, Joe Perches wrote:
> On Wed, 2017-02-22 at 10:01 +1100, Tobin C. Harding wrote:
> > Checkpatch may be giving a false positive of type CONST_STRUCT when
> > parsing files in drivers/staging/comedi/drivers.
> >
> > $ pwd
> > build/kernel/linux-trees/gregKH/staging/
> >
> > $ cd drivers/staging/comedi/drivers
> >
> > $ checkpatch --terse --show-types *.c | grep CONST_STRUCT
> > addi_apci_3501.c:97: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > das16.c:972: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > das16.c:1006: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > jr3_pci.c:659: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > jr3_pci.c:667: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > jr3_pci.c:668: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
> > ni_670x.c:212: WARNING:CONST_STRUCT: struct comedi_lrange should normally be const
>
> checkpatch is brainless, it just looks for patterns
> that are atypical.
>
> $ git grep -E "struct\s+comedi_lrange\b" | wc -l
> 223
> $ git grep -E "const\s+struct\s+comedi_lrange\b" | wc -l
> 215
>
> So, yes, that struct is normally const.
> Normally doesn't mean always or has to be.
>
Cheers Joe. I'm sure this is not the first time you have explained
that. Would it be a good idea to add some documentation (in
Documentation/process) about checkpatch gotchas. Perhaps we could save
some people some time if every newbie didn't have to make the same
mistakes (or ask the same questions).
The first two could be;
1. Don't fix line over 80 warnings if it does not objectively make the
code more readable (see coding-style.rst, grep for 'Statements longer
than 80 columns').
2. Warning struct foo should normally be const ... description of how
checkpatch decides this warning is necessary.
thanks,
Tobin.