2021-06-05 16:14:12

by Dwaipayan Ray

[permalink] [raw]
Subject: [PATCH] checkpatch: Fix check for embedded filename

When checkpatch is run on file contents piped through stdin,
it may generate false EMBEDDED_FILENAME warnings if the
--file flag is used.

Consider the following test file:
$cat test.c
int x = a - b;

$cat test.c | ./scripts/checkpatch.pl -f
WARNING: It's generally not useful to have the filename in the file
+int x = a - b;

So any instance of "-" in the file contents will trigger
an EMBEDDED_FILENAME warning.

Fix it by checking if $realfile is not "-".

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

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3e1795311c87..2f50fafa0ac1 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3619,7 +3619,7 @@ sub process {
}

# check for embedded filenames
- if ($rawline =~ /^\+.*\Q$realfile\E/) {
+ if ($realfile ne "-" && $rawline =~ /^\+.*\Q$realfile\E/) {
WARN("EMBEDDED_FILENAME",
"It's generally not useful to have the filename in the file\n" . $herecurr);
}
--
2.28.0


2021-06-05 17:26:08

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Fix check for embedded filename

On Sat, 2021-06-05 at 21:42 +0530, Dwaipayan Ray wrote:
> When checkpatch is run on file contents piped through stdin,
> it may generate false EMBEDDED_FILENAME warnings if the
> --file flag is used.

I think this is a "don't do that" scenario and this change
is not necessary.



2021-06-05 17:37:21

by Dwaipayan Ray

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Fix check for embedded filename

On Sat, Jun 5, 2021 at 10:51 PM Joe Perches <[email protected]> wrote:
>
> On Sat, 2021-06-05 at 21:42 +0530, Dwaipayan Ray wrote:
> > When checkpatch is run on file contents piped through stdin,
> > it may generate false EMBEDDED_FILENAME warnings if the
> > --file flag is used.
>
> I think this is a "don't do that" scenario and this change
> is not necessary.
>

Okay then. I will drop this.
Sorry for the noise.

Thanks & Regards,
Dwaipayan.

2021-06-05 18:39:46

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Fix check for embedded filename

On Sat, 2021-06-05 at 23:03 +0530, Dwaipayan Ray wrote:
> On Sat, Jun 5, 2021 at 10:51 PM Joe Perches <[email protected]> wrote:
> >
> > On Sat, 2021-06-05 at 21:42 +0530, Dwaipayan Ray wrote:
> > > When checkpatch is run on file contents piped through stdin,
> > > it may generate false EMBEDDED_FILENAME warnings if the
> > > --file flag is used.
> >
> > I think this is a "don't do that" scenario and this change
> > is not necessary.
> >
>
> Okay then. I will drop this.
> Sorry for the noise.

I think you want something like this:
---
scripts/checkpatch.pl | 1 +
1 file changed, 1 insertion(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index dad87c3686326..582f8e07d32d5 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -331,6 +331,7 @@ help(0) if ($help);

die "$P: --git cannot be used with --file or --fix\n" if ($git && ($file || $fix));
die "$P: --verbose cannot be used with --terse\n" if ($verbose && $terse);
+die "$P: -f/--file requires at least one filename\n" if ($file && $#ARGV < 0);

if ($color =~ /^[01]$/) {
$color = !$color;

2021-06-05 18:48:40

by Dwaipayan Ray

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Fix check for embedded filename

On Sun, Jun 6, 2021 at 12:03 AM Joe Perches <[email protected]> wrote:
>
> On Sat, 2021-06-05 at 23:03 +0530, Dwaipayan Ray wrote:
> > On Sat, Jun 5, 2021 at 10:51 PM Joe Perches <[email protected]> wrote:
> > >
> > > On Sat, 2021-06-05 at 21:42 +0530, Dwaipayan Ray wrote:
> > > > When checkpatch is run on file contents piped through stdin,
> > > > it may generate false EMBEDDED_FILENAME warnings if the
> > > > --file flag is used.
> > >
> > > I think this is a "don't do that" scenario and this change
> > > is not necessary.
> > >
> >
> > Okay then. I will drop this.
> > Sorry for the noise.
>
> I think you want something like this:
> ---
> scripts/checkpatch.pl | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index dad87c3686326..582f8e07d32d5 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -331,6 +331,7 @@ help(0) if ($help);
>
> die "$P: --git cannot be used with --file or --fix\n" if ($git && ($file || $fix));
> die "$P: --verbose cannot be used with --terse\n" if ($verbose && $terse);
> +die "$P: -f/--file requires at least one filename\n" if ($file && $#ARGV < 0);
>
> if ($color =~ /^[01]$/) {
> $color = !$color;
>

Yes, that's nice.
Most of the checks don't work with piped input when --file
is specified. So disabling it will avoid any confusion.

I can send in a patch if it's okay with you.

Thanks,
Dwaipayan.

2021-06-05 18:53:45

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: Fix check for embedded filename

On Sun, 2021-06-06 at 00:14 +0530, Dwaipayan Ray wrote:
> On Sun, Jun 6, 2021 at 12:03 AM Joe Perches <[email protected]> wrote:
> > On Sat, 2021-06-05 at 23:03 +0530, Dwaipayan Ray wrote:
> > > On Sat, Jun 5, 2021 at 10:51 PM Joe Perches <[email protected]> wrote:
> > > > On Sat, 2021-06-05 at 21:42 +0530, Dwaipayan Ray wrote:
> > > > > When checkpatch is run on file contents piped through stdin,
> > > > > it may generate false EMBEDDED_FILENAME warnings if the
> > > > > --file flag is used.
> > > >
> > > > I think this is a "don't do that" scenario and this change
> > > > is not necessary.
> > > >
> > >
> > > Okay then. I will drop this.
> > > Sorry for the noise.
> >
> > I think you want something like this:
> > ---
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> > @@ -331,6 +331,7 @@ help(0) if ($help);
> >
> > ?die "$P: --git cannot be used with --file or --fix\n" if ($git && ($file || $fix));
> > ?die "$P: --verbose cannot be used with --terse\n" if ($verbose && $terse);
> > +die "$P: -f/--file requires at least one filename\n" if ($file && $#ARGV < 0);
> >
> > ?if ($color =~ /^[01]$/) {
> > ????????$color = !$color;
> >
>
> Yes, that's nice.
> Most of the checks don't work with piped input when --file
> is specified. So disabling it will avoid any confusion.
>
> I can send in a patch if it's okay with you.

Fine by me. You noticed, your patch...