Re: [PATCH] checkpatch: Allow --fix removal of unnecessary break statements

From: Joe Perches
Date: Mon Oct 19 2020 - 11:16:52 EST


On Mon, 2020-10-19 at 05:55 -0700, Tom Rix wrote:
> On 10/18/20 1:19 PM, Joe Perches wrote:
> > On Sun, 2020-10-18 at 13:07 -0700, Tom Rix wrote:
> > > I like!
> > []
> > > could add a '|break' here to catch the couple
> > []
> > > break;
> > >
> > > break;
> > Unfortunately, checkpatch is really stupid and it
> > wouldn't catch those
> > cases as there are blank lines
> > between the existing consecutive break
> > statements.
> >
> > It would catch
> >
> > break;
> > break;
> >
> > but there aren't any of those so it seems unlikely
> > to be a very useful addition.
>
> Unusual, but there are a couple of these.
>
> Here's one from my rfc diff
>
> diff --git a/sound/soc/codecs/wcd-clsh-v2.c b/sound/soc/codecs/wcd-clsh-v2.c
> index 1be82113c59a..817d8259758c 100644
> --- a/sound/soc/codecs/wcd-clsh-v2.c
> +++ b/sound/soc/codecs/wcd-clsh-v2.c
> @@ -478,11 +478,10 @@ static int _wcd_clsh_ctrl_set_state(struct wcd_clsh_ctrl *ctrl, int req_state,
> wcd_clsh_state_hph_l(ctrl, req_state, is_enable, mode);
> break;
> case WCD_CLSH_STATE_HPHR:
> wcd_clsh_state_hph_r(ctrl, req_state, is_enable, mode);
> break;
> - break;
> case WCD_CLSH_STATE_LO:
> wcd_clsh_state_lo(ctrl, req_state, is_enable, mode);
> break;
> default:
> break;

Thanks, I guess my grep skilz ain't good enough.

I used:
.
$ git grep -A1 -n "break;" | grep -B1 -P '\-\d+\-.*break;'

but that doesn't work because the line after the
first break is also break then that line also matches
break; too so the second grep expecting to match the
'-<line#>- break;' doesn't work. That line also
matches the first pattern so it's ':<line#>:'

Duh...

This seems to work though:

$ git grep -n -P '^\s*break;\s*$' | \
awk -F: '{if ($1==o1 && $2==o2+1) {print $0;} o1=$1; o2=$2;}'
drivers/gpu/drm/amd/display/dc/dce/dce_transform.c:1333: break;
drivers/media/usb/gspca/sn9c20x.c:1864: break;
drivers/video/fbdev/pm2fb.c:479: break;
drivers/video/fbdev/pm2fb.c:501: break;
sound/soc/codecs/wcd-clsh-v2.c:483: break;

Anyway it doesn't hurt to add it.

cheers, Joe