2021-06-05 19:21:15

by Dwaipayan Ray

[permalink] [raw]
Subject: [PATCH] checkpatch: do not allow using -f/--file option without a filename

When checkpatch is run without a filename, it reads from stdin.
But if --file option is used along with that, it may generate
false positives.

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;

This is a false positive and occurs because $realfile is set to "-".
Also since checkpatch relies on the file's extension to run specific
checks for c files, assembly files, etc, most of the checks are
not run as well.

So it is better to disable -f/--file option when checkpatch is
run without a filename.

Link: https://lore.kernel.org/lkml/[email protected]/T/#t
Suggested-by: Joe Perches <[email protected]>
Signed-off-by: Dwaipayan Ray <[email protected]>
---
scripts/checkpatch.pl | 1 +
1 file changed, 1 insertion(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3e1795311c87..7dff9206f9f0 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;
--
2.28.0


2021-06-05 19:34:44

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: do not allow using -f/--file option without a filename

On Sun, 2021-06-06 at 00:47 +0530, Dwaipayan Ray wrote:
> When checkpatch is run without a filename, it reads from stdin.
> But if --file option is used along with that, it may generate
> false positives.
>
> 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;
>
> This is a false positive and occurs because $realfile is set to "-".
> Also since checkpatch relies on the file's extension to run specific
> checks for c files, assembly files, etc, most of the checks are
> not run as well.
>
> So it is better to disable -f/--file option when checkpatch is
> run without a filename.

That's a reasonable commit message, thanks.

> 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;


2021-06-07 05:16:00

by Lukas Bulwahn

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: do not allow using -f/--file option without a filename

On Sat, Jun 5, 2021 at 9:32 PM Joe Perches <[email protected]> wrote:
>
> On Sun, 2021-06-06 at 00:47 +0530, Dwaipayan Ray wrote:
> > When checkpatch is run without a filename, it reads from stdin.
> > But if --file option is used along with that, it may generate

But if the --file option is used...

> > false positives.
> >
> > 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;
> >
> > This is a false positive and occurs because $realfile is set to "-".
> > Also since checkpatch relies on the file's extension to run specific
> > checks for c files, assembly files, etc, most of the checks are
> > not run as well.
> >
> > So it is better to disable -f/--file option when checkpatch is
> > run without a filename.
>
> That's a reasonable commit message, thanks.
>

That can be shortened to:

Disable -f/--file option when checkpatch is run without a filename.

How about adding a description in the checkpatch Documentation on this
topic as well, as part of this patch?

Lukas

> > 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;
>
>

2021-06-07 05:56:15

by Dwaipayan Ray

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: do not allow using -f/--file option without a filename

On Mon, Jun 7, 2021 at 10:41 AM Lukas Bulwahn <[email protected]> wrote:
>
> On Sat, Jun 5, 2021 at 9:32 PM Joe Perches <[email protected]> wrote:
> >
> > On Sun, 2021-06-06 at 00:47 +0530, Dwaipayan Ray wrote:
> > > When checkpatch is run without a filename, it reads from stdin.
> > > But if --file option is used along with that, it may generate
>
> But if the --file option is used...
>
> > > false positives.
> > >
> > > 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;
> > >
> > > This is a false positive and occurs because $realfile is set to "-".
> > > Also since checkpatch relies on the file's extension to run specific
> > > checks for c files, assembly files, etc, most of the checks are
> > > not run as well.
> > >
> > > So it is better to disable -f/--file option when checkpatch is
> > > run without a filename.
> >
> > That's a reasonable commit message, thanks.
> >
>
> That can be shortened to:
>
> Disable -f/--file option when checkpatch is run without a filename.
>
> How about adding a description in the checkpatch Documentation on this
> topic as well, as part of this patch?
>

I can also add it to the next batch of the documentation updates I am
working on. That can list all the flag combinations that's not
allowed. And we can let this patch go independently for now...

Thanks,
Dwaipayan.