2017-09-10 07:53:31

by Heinrich Schuchardt

[permalink] [raw]
Subject: [PATCH 1/1] scripts/checkpatch.pl: avoid false warning missing break

void foo(int a)
switch (a) {
case 'h':
fun1();
exit(1);
default:
}

creates a warning
Possible switch case/default not preceded by break
or fallthrough comment

exit( should be treated like return.

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

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 3afc870f0f..da09b2313c 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -4361,7 +4361,7 @@ sub process {
next if ($fline =~ /^.[\s$;]*$/);
$has_statement = 1;
$count++;
- $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/);
+ $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|exit\(\b|return\b|goto\b|continue\b)/);
}
if (!$has_break && $has_statement) {
WARN("MISSING_BREAK",
--
2.11.0


2017-09-10 14:16:13

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH 1/1] scripts/checkpatch.pl: avoid false warning missing break

On Sun, 2017-09-10 at 09:52 +0200, Heinrich Schuchardt wrote:
> void foo(int a)
> switch (a) {
> case 'h':
> fun1();
> exit(1);
> default:
> }
>
> creates a warning
> Possible switch case/default not preceded by break
> or fallthrough comment
>
> exit( should be treated like return.

OK, but

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -4361,7 +4361,7 @@ sub process {
> next if ($fline =~ /^.[\s$;]*$/);
> $has_statement = 1;
> $count++;
> - $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/);
> + $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|exit\(\b|return\b|goto\b|continue\b)/);

exit\s*\(

Although this could have a false negative
on some code.

2017-09-10 15:46:40

by Heinrich Schuchardt

[permalink] [raw]
Subject: [PATCH v2 1/1] scripts/checkpatch.pl: avoid false warning missing break

void foo(int a)
switch (a) {
case 'h':
fun1();
exit(1);
default:
}

creates a warning
Possible switch case/default not preceded by break
or fallthrough comment

exit( should be treated like return.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
v2:
Allow whitespace between 'exit' and '('.
---
scripts/checkpatch.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 2287a0bca8..690fe07d1b 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6084,7 +6084,7 @@ sub process {
next if ($fline =~ /^.[\s$;]*$/);
$has_statement = 1;
$count++;
- $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/);
+ $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|exit\s*\(\b|return\b|goto\b|continue\b)/);
}
if (!$has_break && $has_statement) {
WARN("MISSING_BREAK",
--
2.11.0

2017-09-10 17:55:58

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH v2 1/1] scripts/checkpatch.pl: avoid false warning missing break

On Sun, 2017-09-10 at 17:46 +0200, Heinrich Schuchardt wrote:
> void foo(int a)
> switch (a) {
> case 'h':
> fun1();
> exit(1);
> default:
> }
>
> creates a warning
> Possible switch case/default not preceded by break
> or fallthrough comment
>
> exit( should be treated like return.
>
> Signed-off-by: Heinrich Schuchardt <[email protected]>

Acked-by: Joe Perches <[email protected]>

> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -6084,7 +6084,7 @@ sub process {
> next if ($fline =~ /^.[\s$;]*$/);
> $has_statement = 1;
> $count++;
> - $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|return\b|goto\b|continue\b)/);
> + $has_break = 1 if ($fline =~ /\bswitch\b|\b(?:break\s*;[\s$;]*$|exit\s*\(\b|return\b|goto\b|continue\b)/);
> }
> if (!$has_break && $has_statement) {
> WARN("MISSING_BREAK",