devtool: fix falsely reporting from checkpatch

Message ID 20250120112654.1049456-1-wanry@yunsilicon.com (mailing list archive)
State New
Delegated to: Thomas Monjalon
Headers
Series devtool: fix falsely reporting from checkpatch |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-unit-arm64-testing pending Testing pending
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-abi-testing pending Testing pending
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Renyong Wan Jan. 20, 2025, 11:26 a.m. UTC
When executes the check_packed_attributes function in checkpatch,
if __rte_packed_begin or __rte_packed_end appear in the context
of a patch file, there may be a situation where the counts of
__rte_packed_begin and __rte_packed_end do not match, causing
checkpatch to return a failure.
This patch fixes this issue by only counting the lines in the
patch file that start with a + and include either
__rte_packed_begin or __rte_packed_end.

Signed-off-by: WanRenyong <wanry@yunsilicon.com>
---
 devtools/checkpatches.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

David Marchand Jan. 28, 2025, 3:02 p.m. UTC | #1
Hi,

On Mon, Jan 20, 2025 at 12:27 PM WanRenyong <wanry@yunsilicon.com> wrote:
>
> When executes the check_packed_attributes function in checkpatch,
> if __rte_packed_begin or __rte_packed_end appear in the context
> of a patch file, there may be a situation where the counts of
> __rte_packed_begin and __rte_packed_end do not match, causing
> checkpatch to return a failure.
> This patch fixes this issue by only counting the lines in the
> patch file that start with a + and include either
> __rte_packed_begin or __rte_packed_end.
>
> Signed-off-by: WanRenyong <wanry@yunsilicon.com>

Thanks for proposing this fix.

When sending such fixes, don't forget to add a Fixes: and Cc:
author/maintainers by using --cc-cmd devtools/get-maintainers.sh


Adding Akhil, André and Thomas in the loop.

I also had some concern about the check:
https://inbox.dpdk.org/dev/CAJFAV8w=s1L-WYk+Qv-B+Mn6eAwKrB=GTz6hU--ZoLrJsz7=DQ@mail.gmail.com/

But I merged the check untouched as nobody else seemed to object.
Checkpatch warnings are known to have false positive and such false
positives are "filtered" by subtree maintainers.


> ---
>  devtools/checkpatches.sh | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> index 003bb49e04..2e228b7f92 100755
> --- a/devtools/checkpatches.sh
> +++ b/devtools/checkpatches.sh
> @@ -384,8 +384,8 @@ check_packed_attributes() { # <patch>
>                 res=1
>         fi
>
> -       begin_count=$(grep '__rte_packed_begin' "$1" | wc -l)
> -       end_count=$(grep '__rte_packed_end' "$1" | wc -l)
> +       begin_count=$(grep -E '^\+.*__rte_packed_begin' "$1" | wc -l)
> +       end_count=$(grep -E '^\+.*__rte_packed_end' "$1" | wc -l)
>         if [ $begin_count != $end_count ]; then
>                 echo "__rte_packed_begin and __rte_packed_end should always be used in pairs."
>                 res=1

I don't think this change is any better.

There is a good chance that a patch touching just a first line of a
structure definition won't come along a line touching the last line of
the struct.
My suggestion (if we want to avoid those non useful warning) would be
to just remove the counting stuff in the check.

Opinions?
  
Andre Muezerie Jan. 28, 2025, 3:55 p.m. UTC | #2
On Tue, Jan 28, 2025 at 04:02:27PM +0100, David Marchand wrote:
> Hi,
> 
> On Mon, Jan 20, 2025 at 12:27 PM WanRenyong <wanry@yunsilicon.com> wrote:
> >
> > When executes the check_packed_attributes function in checkpatch,
> > if __rte_packed_begin or __rte_packed_end appear in the context
> > of a patch file, there may be a situation where the counts of
> > __rte_packed_begin and __rte_packed_end do not match, causing
> > checkpatch to return a failure.
> > This patch fixes this issue by only counting the lines in the
> > patch file that start with a + and include either
> > __rte_packed_begin or __rte_packed_end.
> >
> > Signed-off-by: WanRenyong <wanry@yunsilicon.com>
> 
> Thanks for proposing this fix.
> 
> When sending such fixes, don't forget to add a Fixes: and Cc:
> author/maintainers by using --cc-cmd devtools/get-maintainers.sh
> 
> 
> Adding Akhil, André and Thomas in the loop.
> 
> I also had some concern about the check:
> https://inbox.dpdk.org/dev/CAJFAV8w=s1L-WYk+Qv-B+Mn6eAwKrB=GTz6hU--ZoLrJsz7=DQ@mail.gmail.com/
> 
> But I merged the check untouched as nobody else seemed to object.
> Checkpatch warnings are known to have false positive and such false
> positives are "filtered" by subtree maintainers.
> 
> 
> > ---
> >  devtools/checkpatches.sh | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> > index 003bb49e04..2e228b7f92 100755
> > --- a/devtools/checkpatches.sh
> > +++ b/devtools/checkpatches.sh
> > @@ -384,8 +384,8 @@ check_packed_attributes() { # <patch>
> >                 res=1
> >         fi
> >
> > -       begin_count=$(grep '__rte_packed_begin' "$1" | wc -l)
> > -       end_count=$(grep '__rte_packed_end' "$1" | wc -l)
> > +       begin_count=$(grep -E '^\+.*__rte_packed_begin' "$1" | wc -l)
> > +       end_count=$(grep -E '^\+.*__rte_packed_end' "$1" | wc -l)
> >         if [ $begin_count != $end_count ]; then
> >                 echo "__rte_packed_begin and __rte_packed_end should always be used in pairs."
> >                 res=1
> 
> I don't think this change is any better.
> 
> There is a good chance that a patch touching just a first line of a
> structure definition won't come along a line touching the last line of
> the struct.
> My suggestion (if we want to avoid those non useful warning) would be
> to just remove the counting stuff in the check.
> 
> Opinions?
> 
> 
> -- 
> David Marchand

Yes, it was known that false positives could happen, as is the case with many other checks used today. While I was working on the patchset that added this new check it helped me identify some issues with my changes. I feel I benefited from this check at that time, but if people feel that it is causing more harm than good, I am not opposed to having it removed.
  

Patch

diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
index 003bb49e04..2e228b7f92 100755
--- a/devtools/checkpatches.sh
+++ b/devtools/checkpatches.sh
@@ -384,8 +384,8 @@  check_packed_attributes() { # <patch>
 		res=1
 	fi
 
-	begin_count=$(grep '__rte_packed_begin' "$1" | wc -l)
-	end_count=$(grep '__rte_packed_end' "$1" | wc -l)
+	begin_count=$(grep -E '^\+.*__rte_packed_begin' "$1" | wc -l)
+	end_count=$(grep -E '^\+.*__rte_packed_end' "$1" | wc -l)
 	if [ $begin_count != $end_count ]; then
 		echo "__rte_packed_begin and __rte_packed_end should always be used in pairs."
 		res=1