2022-12-30 20:22:49

by Gerhard Engleder

[permalink] [raw]
Subject: [PATCH] checkpatch: Ignore ETHTOOL_LINK_MODE_ enum values

Since commit 4104a20646 enum values like
ETHTOOL_LINK_MODE_Asym_Pause_BIT are ignored. But there are other enums
like ETHTOOL_LINK_MODE_1000baseT_Full_BIT, which are not ignored
because of the not matching '1000baseT' substring.

Extend regex to match also substrings like '1000baseT'.

Signed-off-by: Gerhard Engleder <[email protected]>
---
scripts/checkpatch.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 78cc595b98ce..861fa547001e 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5780,7 +5780,7 @@ sub process {
if ($var !~ /^$Constant$/ &&
$var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
#Ignore some autogenerated defines and enum values
- $var !~ /^(?:[A-Z]+_){1,5}[A-Z]{1,3}[a-z]/ &&
+ $var !~ /^(?:[A-Z]+_){1,5}([A-Z]{1,3}[a-z]|[0-9]+[a-z]+[A-Z])/ &&
#Ignore Page<foo> variants
$var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ &&
#Ignore SI style variants like nS, mV and dB
--
2.30.2


2022-12-30 21:20:10

by Gerhard Engleder

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Ignore ETHTOOL_LINK_MODE_ enum values

On 30.12.22 21:31, Joe Perches wrote:
> On Fri, 2022-12-30 at 20:59 +0100, Gerhard Engleder wrote:
>> Since commit 4104a20646 enum values like
>> ETHTOOL_LINK_MODE_Asym_Pause_BIT are ignored. But there are other enums
>> like ETHTOOL_LINK_MODE_1000baseT_Full_BIT, which are not ignored
>> because of the not matching '1000baseT' substring.
>>
>> Extend regex to match also substrings like '1000baseT'.
> []
>> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
>> @@ -5780,7 +5780,7 @@ sub process {
>> if ($var !~ /^$Constant$/ &&
>> $var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
>> #Ignore some autogenerated defines and enum values
>> - $var !~ /^(?:[A-Z]+_){1,5}[A-Z]{1,3}[a-z]/ &&
>> + $var !~ /^(?:[A-Z]+_){1,5}([A-Z]{1,3}[a-z]|[0-9]+[a-z]+[A-Z])/ &&
>
> NAK.
>
> This introduces an unnecessary capture group and as well it would also
> allow too many other variants that should get a warning.

A more exact link mode regex [0-9]+base[A-Z0-9]+_(Half|Full) would
eliminate unwanted matches. Shall I extend the existing regex or
would a separate regex with comment be the better choice?

Gerhard

2022-12-30 21:38:46

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Ignore ETHTOOL_LINK_MODE_ enum values

On Fri, 2022-12-30 at 20:59 +0100, Gerhard Engleder wrote:
> Since commit 4104a20646 enum values like
> ETHTOOL_LINK_MODE_Asym_Pause_BIT are ignored. But there are other enums
> like ETHTOOL_LINK_MODE_1000baseT_Full_BIT, which are not ignored
> because of the not matching '1000baseT' substring.
>
> Extend regex to match also substrings like '1000baseT'.
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -5780,7 +5780,7 @@ sub process {
> if ($var !~ /^$Constant$/ &&
> $var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
> #Ignore some autogenerated defines and enum values
> - $var !~ /^(?:[A-Z]+_){1,5}[A-Z]{1,3}[a-z]/ &&
> + $var !~ /^(?:[A-Z]+_){1,5}([A-Z]{1,3}[a-z]|[0-9]+[a-z]+[A-Z])/ &&

NAK.

This introduces an unnecessary capture group and as well it would also
allow too many other variants that should get a warning.

Try a git grep using that pattern and see if all the matches are
actually what you want to allow

$ git grep -Poh '\b(?:[A-Z]+_){1,5}([A-Z]{1,3}[a-z]|[0-9]+[a-z]+[A-Z])\w*\b' -- '*.[ch]' | \
sort | uniq -c | sort -rn
...

2022-12-31 00:01:48

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Ignore ETHTOOL_LINK_MODE_ enum values

On Fri, 2022-12-30 at 22:15 +0100, Gerhard Engleder wrote:
> On 30.12.22 21:31, Joe Perches wrote:
> > On Fri, 2022-12-30 at 20:59 +0100, Gerhard Engleder wrote:
> > > Since commit 4104a20646 enum values like
> > > ETHTOOL_LINK_MODE_Asym_Pause_BIT are ignored. But there are other enums
> > > like ETHTOOL_LINK_MODE_1000baseT_Full_BIT, which are not ignored
> > > because of the not matching '1000baseT' substring.
> > >
> > > Extend regex to match also substrings like '1000baseT'.
> > []
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > []
> > > @@ -5780,7 +5780,7 @@ sub process {
> > > if ($var !~ /^$Constant$/ &&
> > > $var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
> > > #Ignore some autogenerated defines and enum values
> > > - $var !~ /^(?:[A-Z]+_){1,5}[A-Z]{1,3}[a-z]/ &&
> > > + $var !~ /^(?:[A-Z]+_){1,5}([A-Z]{1,3}[a-z]|[0-9]+[a-z]+[A-Z])/ &&
> >
> > NAK.
> >
> > This introduces an unnecessary capture group and as well it would also
> > allow too many other variants that should get a warning.
>
> A more exact link mode regex [0-9]+base[A-Z0-9]+_(Half|Full) would
> eliminate unwanted matches. Shall I extend the existing regex or
> would a separate regex with comment be the better choice?

Maybe $var !~ /^ETHTOOL_/