The checkpatch.pl only searches 3 previous lines when finding missing
switch/case break, and macros are treated as normal statements. If the
cases are surrounded with CONFIG, checkpatch.pl may report false
warnings. For example:

\+#if xxx
\+      case xxx: {
\+              ...
\+              break/return/...;
\+      }
\+#endif
\+#if xxx
\+      case xxx:
\+              ...
\+#endif

This patch skips lines starting with whitespaces and #, so the counter
of previous statements won't increase in these cases.

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

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4c820607540b..2c0a51ac82a7 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6503,6 +6503,7 @@ sub process {
                                next if ($fline =~ 
/^.(?:\s*(?:case\s+(?:$Ident|$Constant)[\s$;]*|default):[\s$;]*)*$/);
                                $has_break = 1 if ($rline =~ 
/fall[\s_-]*(through|thru)/i);
                                next if ($fline =~ /^.[\s$;]*$/);
+                               next if ($fline =~ /^.\s*#/);
                                $has_statement = 1;
                                $count++;
                                $has_break = 1 if ($fline =~ 
/\bswitch\b|\b(?:break\s*;[\s$;]*$|exit\s*\(\b|return\b|goto\b|continue\b)/);
-- 
2.16.6

Reply via email to