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