* [PATCH] checkpatch.pl: Check for functions without a real prototype
@ 2013-11-18 22:31 Richard Weinberger
2013-11-18 22:36 ` Joe Perches
0 siblings, 1 reply; 5+ messages in thread
From: Richard Weinberger @ 2013-11-18 22:31 UTC (permalink / raw)
To: hpa; +Cc: linux-kernel, apw, joe, bp, Richard Weinberger
Functions like this one are evil:
void foo()
{
...
}
Signed-off-by: Richard Weinberger <richard@nod.at>
CC: hpa@zytor.com
---
scripts/checkpatch.pl | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 61090e0..a1b846d 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2785,6 +2785,19 @@ sub process {
"open brace '{' following function declarations go on the next line\n" . $herecurr);
}
+ if ($line=~/$Type\s*$Ident\(\)/) {
+ ERROR("FUNCTION_NO_PROTOTYPE",
+"Function without a real prototype\n" . $herecurr .
+"Thou shalt not, in the language of C, under any circumstances, on the
+pain of death, declare or define a function with an empty set of
+parentheses, for though in the language of C++ it meaneth the same as
+(void), in C it meaneth (...) which is of meaningless as there be no
+anchor argument by which the types of the varadic arguments can be
+expressed, and which misleadeth the compiler into allowing unsavory code
+and in some cases generate really ugly stuff for varadic handling.
+ -hpa\n");
+ }
+
# open braces for enum, union and struct go on the same line.
if ($line =~ /^.\s*{/ &&
$prevline =~ /^.\s*(?:typedef\s+)?(enum|union|struct)(?:\s+$Ident)?\s*$/) {
--
1.8.4.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] checkpatch.pl: Check for functions without a real prototype
2013-11-18 22:31 [PATCH] checkpatch.pl: Check for functions without a real prototype Richard Weinberger
@ 2013-11-18 22:36 ` Joe Perches
2013-11-18 22:40 ` Richard Weinberger
0 siblings, 1 reply; 5+ messages in thread
From: Joe Perches @ 2013-11-18 22:36 UTC (permalink / raw)
To: Richard Weinberger; +Cc: hpa, linux-kernel, apw, bp
On Mon, 2013-11-18 at 23:31 +0100, Richard Weinberger wrote:
> Functions like this one are evil:
>
> void foo()
> {
> ...
> }
>
> Signed-off-by: Richard Weinberger <richard@nod.at>
> CC: hpa@zytor.com
I won't take simple resubmissions without updating
based on the notes I gave you.
And now, this should be updated to allow --fix use too.
I'll take care of it instead.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] checkpatch.pl: Check for functions without a real prototype
2013-11-18 22:36 ` Joe Perches
@ 2013-11-18 22:40 ` Richard Weinberger
2013-11-18 23:23 ` [PATCH] checkpatch.pl: Check for function declarations without arguments Joe Perches
0 siblings, 1 reply; 5+ messages in thread
From: Richard Weinberger @ 2013-11-18 22:40 UTC (permalink / raw)
To: Joe Perches; +Cc: hpa, linux-kernel, apw, bp
Am Montag, 18. November 2013, 14:36:22 schrieb Joe Perches:
> On Mon, 2013-11-18 at 23:31 +0100, Richard Weinberger wrote:
> > Functions like this one are evil:
> >
> > void foo()
> > {
> >
> > ...
> >
> > }
> >
> > Signed-off-by: Richard Weinberger <richard@nod.at>
> > CC: hpa@zytor.com
>
> I won't take simple resubmissions without updating
> based on the notes I gave you.
Of course. I managed it to send the *old* patch file.
Will resend in a minute...
> And now, this should be updated to allow --fix use too.
>
> I'll take care of it instead.
Thanks,
//richard
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] checkpatch.pl: Check for function declarations without arguments
2013-11-18 22:40 ` Richard Weinberger
@ 2013-11-18 23:23 ` Joe Perches
2013-11-18 23:30 ` Borislav Petkov
0 siblings, 1 reply; 5+ messages in thread
From: Joe Perches @ 2013-11-18 23:23 UTC (permalink / raw)
To: Richard Weinberger, Andrew Morton; +Cc: hpa, linux-kernel, apw, bp
Functions like this one are evil:
void foo()
{
...
}
Because these functions allow variadic arguments without
checking the arguments at all.
Original-patch-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Joe Perches <joe@perches.com>
---
scripts/checkpatch.pl | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 61090e0..2e1ff0c 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2634,6 +2634,15 @@ sub process {
$herecurr);
}
+# check for function declarations without arguments like "int foo()"
+ if ($line =~ /(\b$Type\s+$Ident)\s*\(\s*\)/) {
+ if (ERROR("FUNCTION_WITHOUT_ARGS",
+ "Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
+ $fix) {
+ $fixed[$linenr - 1] =~ s/(\b($Type)\s+($Ident))\s*\(\s*\)/$2 $3(void)/;
+ }
+ }
+
# check for declarations of struct pci_device_id
if ($line =~ /\bstruct\s+pci_device_id\s+\w+\s*\[\s*\]\s*\=\s*\{/) {
WARN("DEFINE_PCI_DEVICE_TABLE",
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] checkpatch.pl: Check for function declarations without arguments
2013-11-18 23:23 ` [PATCH] checkpatch.pl: Check for function declarations without arguments Joe Perches
@ 2013-11-18 23:30 ` Borislav Petkov
0 siblings, 0 replies; 5+ messages in thread
From: Borislav Petkov @ 2013-11-18 23:30 UTC (permalink / raw)
To: Joe Perches; +Cc: Richard Weinberger, Andrew Morton, hpa, linux-kernel, apw
On Mon, Nov 18, 2013 at 03:23:01PM -0800, Joe Perches wrote:
> Functions like this one are evil:
>
> void foo()
> {
> ...
> }
>
> Because these functions allow variadic arguments without
> checking the arguments at all.
>
> Original-patch-by: Richard Weinberger <richard@nod.at>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> scripts/checkpatch.pl | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 61090e0..2e1ff0c 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2634,6 +2634,15 @@ sub process {
> $herecurr);
> }
>
> +# check for function declarations without arguments like "int foo()"
> + if ($line =~ /(\b$Type\s+$Ident)\s*\(\s*\)/) {
> + if (ERROR("FUNCTION_WITHOUT_ARGS",
> + "Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
I liked the nice preaching comment better - this one is boring.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-11-18 23:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-18 22:31 [PATCH] checkpatch.pl: Check for functions without a real prototype Richard Weinberger
2013-11-18 22:36 ` Joe Perches
2013-11-18 22:40 ` Richard Weinberger
2013-11-18 23:23 ` [PATCH] checkpatch.pl: Check for function declarations without arguments Joe Perches
2013-11-18 23:30 ` Borislav Petkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®