From: Peter Senna Tschudin <peter.senna@gmail.com>
To: mmarek@suse.cz
Cc: Julia.Lawall@lip6.fr, Gilles.Muller@lip6.fr,
nicolas.palix@imag.fr, peter.senna@gmail.com,
cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org
Subject: [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test
Date: Sat, 8 Dec 2012 15:34:34 -0200 [thread overview]
Message-ID: <1354988074-2165-1-git-send-email-peter.senna@gmail.com> (raw)
This semantic patch looks for semicolons that can be removed without
changing the semantics of the code. The confidence is moderate
because there are some false positives on cases like:
b/drivers/mmc/host/cb710-mmc.c:589
break;
case MMC_POWER_UP:
default:
- /* ignore */;
}
There are 37 patches accepted reported by this semantic patch and
more than 300 fixes to be applied.
Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
---
Resending unchanged. Last sent on November 13 2012. First sent on October 30 2012.
scripts/coccinelle/misc/semicolon.cocci | 83 +++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
create mode 100644 scripts/coccinelle/misc/semicolon.cocci
diff --git a/scripts/coccinelle/misc/semicolon.cocci b/scripts/coccinelle/misc/semicolon.cocci
new file mode 100644
index 0000000..a47eba2
--- /dev/null
+++ b/scripts/coccinelle/misc/semicolon.cocci
@@ -0,0 +1,83 @@
+///
+/// Removes unneeded semicolon.
+///
+// Confidence: Moderate
+// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Comments: Some false positives on empty default cases in switch statements.
+// Options: --no-includes --include-headers
+
+virtual patch
+virtual report
+virtual context
+virtual org
+
+@r_default@
+position p;
+@@
+switch (...)
+{
+default: ...;@p
+}
+
+@r_case@
+position p;
+@@
+(
+switch (...)
+{
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:;@p
+}
+|
+switch (...)
+{
+case ...:...
+case ...:
+case ...:;@p
+}
+)
+
+@r1@
+statement S;
+position p1;
+position p != {r_default.p, r_case.p};
+identifier label;
+@@
+(
+label:;
+|
+S@p1;@p
+)
+
+@script:python@
+p << r1.p;
+p1 << r1.p1;
+@@
+if p[0].line != p1[0].line_end:
+ cocci.include_match(False)
+
+@depends on patch@
+position r1.p;
+@@
+-;@p
+
+@script:python depends on report@
+p << r1.p;
+@@
+coccilib.report.print_report(p[0],"Unneeded semicolon")
+
+@depends on context@
+position r1.p;
+@@
+*;@p
+
+@script:python depends on org@
+p << r1.p;
+@@
+cocci.print_main("Unneeded semicolon",p)
--
1.7.11.7
next reply other threads:[~2012-12-08 17:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-08 17:34 Peter Senna Tschudin [this message]
2012-12-08 17:45 ` [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test Joe Perches
2012-12-08 18:13 ` Peter Senna Tschudin
2012-12-08 18:39 ` Joe Perches
2012-12-09 17:51 ` Peter Senna Tschudin
2012-12-10 18:08 ` [PATCH] checkpatch: Add --strict test for switch/default missing break Joe Perches
2013-01-23 21:41 ` [PATCH] scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test Peter Senna Tschudin
2013-01-24 11:11 ` Michal Marek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1354988074-2165-1-git-send-email-peter.senna@gmail.com \
--to=peter.senna@gmail.com \
--cc=Gilles.Muller@lip6.fr \
--cc=Julia.Lawall@lip6.fr \
--cc=cocci@systeme.lip6.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=mmarek@suse.cz \
--cc=nicolas.palix@imag.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox